//line sql.y:18
package sqlparser

import __yyfmt__ "fmt"

//line sql.y:18
func setParseTree(yylex interface{}, stmt Statement) {
	yylex.(*Tokenizer).ParseTree = stmt
}

func setAllowComments(yylex interface{}, allow bool) {
	yylex.(*Tokenizer).AllowComments = allow
}

func setDDL(yylex interface{}, ddl *DDL) {
	yylex.(*Tokenizer).partialDDL = ddl
}

func incNesting(yylex interface{}) bool {
	yylex.(*Tokenizer).nesting++
	if yylex.(*Tokenizer).nesting == 200 {
		return true
	}
	return false
}

func decNesting(yylex interface{}) {
	yylex.(*Tokenizer).nesting--
}

func forceEOF(yylex interface{}) {
	yylex.(*Tokenizer).ForceEOF = true
}

//line sql.y:50
type yySymType struct {
	yys               int
	empty             struct{}
	statement         Statement
	selStmt           SelectStatement
	ddl               *DDL
	ins               *Insert
	byt               byte
	bytes             []byte
	bytes2            [][]byte
	str               string
	strs              []string
	selectExprs       SelectExprs
	selectExpr        SelectExpr
	columns           Columns
	colName           *ColName
	tableExprs        TableExprs
	tableExpr         TableExpr
	tableName         TableName
	indexHints        *IndexHints
	expr              Expr
	exprs             Exprs
	boolVal           BoolVal
	colTuple          ColTuple
	values            Values
	valTuple          ValTuple
	subquery          *Subquery
	whens             []*When
	when              *When
	orderBy           OrderBy
	order             *Order
	limit             *Limit
	updateExprs       UpdateExprs
	updateExpr        *UpdateExpr
	setExprs          SetExprs
	setExpr           *SetExpr
	colIdent          ColIdent
	colIdents         []ColIdent
	tableIdent        TableIdent
	convertType       *ConvertType
	aliasedTableName  *AliasedTableExpr
	TableSpec         *TableSpec
	TableOptions      TableOptions
	columnType        ColumnType
	colKeyOpt         ColumnKeyOption
	optVal            *SQLVal
	LengthScaleOption LengthScaleOption
	columnDefinition  *ColumnDefinition
	indexDefinition   *IndexDefinition
	indexInfo         *IndexInfo
	indexColumn       *IndexColumn
	indexColumns      []*IndexColumn
}

const LEX_ERROR = 57346
const UNION = 57347
const SELECT = 57348
const INSERT = 57349
const UPDATE = 57350
const DELETE = 57351
const FROM = 57352
const WHERE = 57353
const GROUP = 57354
const HAVING = 57355
const ORDER = 57356
const BY = 57357
const LIMIT = 57358
const OFFSET = 57359
const FOR = 57360
const ALL = 57361
const DISTINCT = 57362
const AS = 57363
const EXISTS = 57364
const ASC = 57365
const DESC = 57366
const INTO = 57367
const DUPLICATE = 57368
const KEY = 57369
const DEFAULT = 57370
const SET = 57371
const LOCK = 57372
const FULL = 57373
const CHECKSUM = 57374
const FULLTEXT = 57375
const PARSER = 57376
const NGRAM = 57377
const VALUES = 57378
const LAST_INSERT_ID = 57379
const NEXT = 57380
const VALUE = 57381
const SHARE = 57382
const MODE = 57383
const SQL_NO_CACHE = 57384
const SQL_CACHE = 57385
const JOIN = 57386
const STRAIGHT_JOIN = 57387
const LEFT = 57388
const RIGHT = 57389
const INNER = 57390
const OUTER = 57391
const CROSS = 57392
const NATURAL = 57393
const USE = 57394
const FORCE = 57395
const ON = 57396
const ID = 57397
const HEX = 57398
const STRING = 57399
const INTEGRAL = 57400
const FLOAT = 57401
const HEXNUM = 57402
const VALUE_ARG = 57403
const LIST_ARG = 57404
const COMMENT = 57405
const COMMENT_KEYWORD = 57406
const NULL = 57407
const TRUE = 57408
const FALSE = 57409
const OFF = 57410
const OR = 57411
const AND = 57412
const NOT = 57413
const BETWEEN = 57414
const CASE = 57415
const WHEN = 57416
const THEN = 57417
const ELSE = 57418
const END = 57419
const LE = 57420
const GE = 57421
const NE = 57422
const NULL_SAFE_EQUAL = 57423
const IS = 57424
const LIKE = 57425
const REGEXP = 57426
const IN = 57427
const SHIFT_LEFT = 57428
const SHIFT_RIGHT = 57429
const DIV = 57430
const MOD = 57431
const UNARY = 57432
const COLLATE = 57433
const BINARY = 57434
const INTERVAL = 57435
const JSON_EXTRACT_OP = 57436
const JSON_UNQUOTE_EXTRACT_OP = 57437
const CREATE = 57438
const ALTER = 57439
const DROP = 57440
const RENAME = 57441
const ANALYZE = 57442
const ADD = 57443
const MODIFY = 57444
const TABLE = 57445
const INDEX = 57446
const VIEW = 57447
const TO = 57448
const IGNORE = 57449
const IF = 57450
const UNIQUE = 57451
const USING = 57452
const PRIMARY = 57453
const COLUMN = 57454
const SHOW = 57455
const DESCRIBE = 57456
const EXPLAIN = 57457
const DATE = 57458
const ESCAPE = 57459
const REPAIR = 57460
const OPTIMIZE = 57461
const TRUNCATE = 57462
const BIT = 57463
const TINYINT = 57464
const SMALLINT = 57465
const MEDIUMINT = 57466
const INT = 57467
const INTEGER = 57468
const BIGINT = 57469
const INTNUM = 57470
const REAL = 57471
const DOUBLE = 57472
const FLOAT_TYPE = 57473
const DECIMAL = 57474
const NUMERIC = 57475
const TIME = 57476
const TIMESTAMP = 57477
const DATETIME = 57478
const YEAR = 57479
const CHAR = 57480
const VARCHAR = 57481
const BOOL = 57482
const CHARACTER = 57483
const VARBINARY = 57484
const NCHAR = 57485
const CHARSET = 57486
const TEXT = 57487
const TINYTEXT = 57488
const MEDIUMTEXT = 57489
const LONGTEXT = 57490
const BLOB = 57491
const TINYBLOB = 57492
const MEDIUMBLOB = 57493
const LONGBLOB = 57494
const JSON = 57495
const ENUM = 57496
const NULLX = 57497
const AUTO_INCREMENT = 57498
const APPROXNUM = 57499
const SIGNED = 57500
const UNSIGNED = 57501
const ZEROFILL = 57502
const DATABASES = 57503
const TABLES = 57504
const VITESS_KEYSPACES = 57505
const VITESS_SHARDS = 57506
const VSCHEMA_TABLES = 57507
const WARNINGS = 57508
const VARIABLES = 57509
const EVENTS = 57510
const BINLOG = 57511
const GTID = 57512
const STATUS = 57513
const COLUMNS = 57514
const CURRENT_TIMESTAMP = 57515
const DATABASE = 57516
const CURRENT_DATE = 57517
const CURRENT_TIME = 57518
const LOCALTIME = 57519
const LOCALTIMESTAMP = 57520
const UTC_DATE = 57521
const UTC_TIME = 57522
const UTC_TIMESTAMP = 57523
const REPLACE = 57524
const CONVERT = 57525
const CAST = 57526
const GROUP_CONCAT = 57527
const SEPARATOR = 57528
const MATCH = 57529
const AGAINST = 57530
const BOOLEAN = 57531
const LANGUAGE = 57532
const WITH = 57533
const QUERY = 57534
const EXPANSION = 57535
const UNUSED = 57536
const PARTITION = 57537
const PARTITIONS = 57538
const HASH = 57539
const XA = 57540
const ENGINES = 57541
const VERSIONS = 57542
const PROCESSLIST = 57543
const QUERYZ = 57544
const TXNZ = 57545
const KILL = 57546
const ENGINE = 57547
const BEGIN = 57548
const START = 57549
const TRANSACTION = 57550
const COMMIT = 57551
const ROLLBACK = 57552
const GLOBAL = 57553
const SESSION = 57554
const NAMES = 57555

var yyToknames = [...]string{
	"$end",
	"error",
	"$unk",
	"LEX_ERROR",
	"UNION",
	"SELECT",
	"INSERT",
	"UPDATE",
	"DELETE",
	"FROM",
	"WHERE",
	"GROUP",
	"HAVING",
	"ORDER",
	"BY",
	"LIMIT",
	"OFFSET",
	"FOR",
	"ALL",
	"DISTINCT",
	"AS",
	"EXISTS",
	"ASC",
	"DESC",
	"INTO",
	"DUPLICATE",
	"KEY",
	"DEFAULT",
	"SET",
	"LOCK",
	"FULL",
	"CHECKSUM",
	"FULLTEXT",
	"PARSER",
	"NGRAM",
	"VALUES",
	"LAST_INSERT_ID",
	"NEXT",
	"VALUE",
	"SHARE",
	"MODE",
	"SQL_NO_CACHE",
	"SQL_CACHE",
	"JOIN",
	"STRAIGHT_JOIN",
	"LEFT",
	"RIGHT",
	"INNER",
	"OUTER",
	"CROSS",
	"NATURAL",
	"USE",
	"FORCE",
	"ON",
	"'('",
	"','",
	"')'",
	"ID",
	"HEX",
	"STRING",
	"INTEGRAL",
	"FLOAT",
	"HEXNUM",
	"VALUE_ARG",
	"LIST_ARG",
	"COMMENT",
	"COMMENT_KEYWORD",
	"NULL",
	"TRUE",
	"FALSE",
	"OFF",
	"OR",
	"AND",
	"NOT",
	"'!'",
	"BETWEEN",
	"CASE",
	"WHEN",
	"THEN",
	"ELSE",
	"END",
	"'='",
	"'<'",
	"'>'",
	"LE",
	"GE",
	"NE",
	"NULL_SAFE_EQUAL",
	"IS",
	"LIKE",
	"REGEXP",
	"IN",
	"'|'",
	"'&'",
	"SHIFT_LEFT",
	"SHIFT_RIGHT",
	"'+'",
	"'-'",
	"'*'",
	"'/'",
	"DIV",
	"'%'",
	"MOD",
	"'^'",
	"'~'",
	"UNARY",
	"COLLATE",
	"BINARY",
	"INTERVAL",
	"'.'",
	"JSON_EXTRACT_OP",
	"JSON_UNQUOTE_EXTRACT_OP",
	"CREATE",
	"ALTER",
	"DROP",
	"RENAME",
	"ANALYZE",
	"ADD",
	"MODIFY",
	"TABLE",
	"INDEX",
	"VIEW",
	"TO",
	"IGNORE",
	"IF",
	"UNIQUE",
	"USING",
	"PRIMARY",
	"COLUMN",
	"SHOW",
	"DESCRIBE",
	"EXPLAIN",
	"DATE",
	"ESCAPE",
	"REPAIR",
	"OPTIMIZE",
	"TRUNCATE",
	"BIT",
	"TINYINT",
	"SMALLINT",
	"MEDIUMINT",
	"INT",
	"INTEGER",
	"BIGINT",
	"INTNUM",
	"REAL",
	"DOUBLE",
	"FLOAT_TYPE",
	"DECIMAL",
	"NUMERIC",
	"TIME",
	"TIMESTAMP",
	"DATETIME",
	"YEAR",
	"CHAR",
	"VARCHAR",
	"BOOL",
	"CHARACTER",
	"VARBINARY",
	"NCHAR",
	"CHARSET",
	"TEXT",
	"TINYTEXT",
	"MEDIUMTEXT",
	"LONGTEXT",
	"BLOB",
	"TINYBLOB",
	"MEDIUMBLOB",
	"LONGBLOB",
	"JSON",
	"ENUM",
	"NULLX",
	"AUTO_INCREMENT",
	"APPROXNUM",
	"SIGNED",
	"UNSIGNED",
	"ZEROFILL",
	"DATABASES",
	"TABLES",
	"VITESS_KEYSPACES",
	"VITESS_SHARDS",
	"VSCHEMA_TABLES",
	"WARNINGS",
	"VARIABLES",
	"EVENTS",
	"BINLOG",
	"GTID",
	"STATUS",
	"COLUMNS",
	"CURRENT_TIMESTAMP",
	"DATABASE",
	"CURRENT_DATE",
	"CURRENT_TIME",
	"LOCALTIME",
	"LOCALTIMESTAMP",
	"UTC_DATE",
	"UTC_TIME",
	"UTC_TIMESTAMP",
	"REPLACE",
	"CONVERT",
	"CAST",
	"GROUP_CONCAT",
	"SEPARATOR",
	"MATCH",
	"AGAINST",
	"BOOLEAN",
	"LANGUAGE",
	"WITH",
	"QUERY",
	"EXPANSION",
	"UNUSED",
	"PARTITION",
	"PARTITIONS",
	"HASH",
	"XA",
	"ENGINES",
	"VERSIONS",
	"PROCESSLIST",
	"QUERYZ",
	"TXNZ",
	"KILL",
	"ENGINE",
	"BEGIN",
	"START",
	"TRANSACTION",
	"COMMIT",
	"ROLLBACK",
	"GLOBAL",
	"SESSION",
	"NAMES",
	"';'",
}
var yyStatenames = [...]string{}

const yyEofCode = 1
const yyErrCode = 2
const yyInitialStackSize = 16

//line yacctab:1
var yyExca = [...]int{
	-1, 1,
	1, -1,
	-2, 0,
	-1, 3,
	5, 26,
	-2, 4,
	-1, 281,
	82, 596,
	-2, 39,
	-1, 286,
	82, 491,
	-2, 442,
	-1, 383,
	110, 478,
	-2, 474,
	-1, 384,
	110, 479,
	-2, 475,
	-1, 559,
	5, 26,
	-2, 418,
	-1, 693,
	110, 481,
	-2, 477,
	-1, 805,
	5, 27,
	-2, 297,
	-1, 829,
	5, 27,
	-2, 419,
	-1, 916,
	5, 26,
	-2, 421,
	-1, 1019,
	5, 27,
	-2, 422,
}

const yyPrivate = 57344

const yyLast = 7076

var yyAct = [...]int{

	384, 518, 1053, 689, 339, 337, 359, 970, 844, 907,
	956, 865, 562, 724, 613, 967, 725, 677, 282, 687,
	886, 361, 797, 574, 260, 296, 570, 721, 563, 705,
	72, 684, 54, 906, 654, 150, 70, 246, 392, 789,
	326, 64, 335, 386, 609, 285, 692, 247, 279, 269,
	277, 459, 362, 48, 630, 53, 600, 58, 252, 686,
	579, 576, 246, 294, 72, 585, 1065, 1052, 629, 1064,
	284, 517, 3, 1044, 1062, 980, 1051, 899, 1043, 249,
	149, 950, 60, 61, 62, 63, 248, 986, 251, 313,
	253, 254, 255, 256, 257, 258, 133, 134, 632, 319,
	641, 48, 317, 311, 752, 593, 928, 628, 740, 265,
	922, 850, 851, 852, 871, 601, 945, 943, 808, 853,
	259, 303, 777, 23, 49, 25, 26, 776, 992, 775,
	1014, 1016, 304, 299, 472, 471, 984, 246, 246, 132,
	774, 44, 588, 324, 1038, 588, 27, 1037, 302, 35,
	1036, 473, 332, 300, 625, 623, 619, 243, 622, 624,
	314, 137, 588, 136, 530, 507, 508, 135, 586, 36,
	770, 977, 51, 745, 594, 935, 772, 486, 487, 488,
	489, 490, 491, 492, 485, 832, 309, 495, 858, 809,
	575, 315, 316, 297, 318, 803, 801, 734, 627, 516,
	399, 495, 1015, 488, 489, 490, 491, 492, 485, 485,
	473, 495, 495, 626, 1028, 484, 483, 493, 494, 486,
	487, 488, 489, 490, 491, 492, 485, 250, 601, 495,
	29, 30, 31, 1042, 33, 985, 587, 983, 859, 587,
	621, 854, 545, 546, 246, 470, 979, 34, 45, 38,
	475, 631, 46, 47, 32, 471, 587, 306, 472, 471,
	841, 584, 620, 583, 901, 329, 387, 661, 706, 773,
	771, 473, 769, 450, 246, 473, 741, 246, 733, 72,
	403, 659, 660, 658, 72, 284, 706, 1024, 815, 474,
	405, 472, 471, 750, 298, 590, 388, 321, 394, 246,
	323, 591, 246, 246, 246, 472, 471, 246, 473, 932,
	931, 246, 923, 246, 246, 246, 50, 887, 48, 472,
	471, 51, 473, 810, 390, 876, 903, 1021, 764, 402,
	1029, 657, 37, 763, 753, 476, 473, 389, 39, 505,
	40, 41, 889, 43, 42, 484, 483, 493, 494, 486,
	487, 488, 489, 490, 491, 492, 485, 322, 891, 495,
	895, 131, 890, 301, 888, 678, 519, 679, 467, 893,
	468, 466, 1040, 528, 472, 471, 647, 649, 650, 892,
	989, 995, 648, 930, 894, 896, 504, 506, 782, 783,
	784, 473, 72, 780, 762, 1059, 325, 246, 551, 297,
	246, 873, 72, 870, 564, 565, 847, 573, 284, 954,
	325, 325, 515, 547, 846, 520, 521, 522, 523, 524,
	525, 526, 273, 529, 531, 531, 531, 531, 531, 531,
	531, 531, 539, 540, 541, 542, 842, 580, 925, 924,
	549, 795, 325, 864, 863, 569, 567, 838, 560, 746,
	572, 351, 350, 352, 353, 354, 355, 246, 861, 860,
	356, 246, 737, 615, 831, 325, 988, 559, 695, 325,
	55, 680, 451, 411, 410, 644, 645, 305, 651, 652,
	602, 603, 604, 656, 987, 855, 635, 571, 824, 640,
	611, 612, 695, 509, 510, 511, 512, 513, 514, 23,
	655, 958, 961, 962, 963, 959, 634, 960, 964, 637,
	638, 639, 795, 51, 642, 72, 722, 21, 732, 23,
	732, 683, 557, 284, 519, 827, 954, 700, 701, 558,
	72, 862, 732, 548, 795, 691, 707, 532, 533, 534,
	535, 536, 537, 538, 795, 401, 543, 387, 51, 915,
	681, 682, 595, 614, 65, 23, 266, 742, 610, 48,
	605, 72, 693, 564, 565, 703, 1032, 730, 51, 849,
	723, 722, 710, 520, 264, 736, 617, 456, 1007, 1005,
	726, 698, 699, 1008, 1006, 702, 360, 713, 714, 731,
	555, 1035, 697, 596, 597, 598, 599, 1034, 1004, 709,
	1003, 711, 712, 735, 51, 51, 270, 271, 606, 607,
	608, 727, 1057, 48, 720, 1050, 781, 1009, 246, 962,
	963, 643, 719, 244, 756, 718, 758, 759, 760, 738,
	653, 393, 728, 662, 663, 664, 665, 666, 667, 668,
	669, 670, 671, 672, 673, 674, 675, 676, 275, 391,
	744, 1039, 747, 754, 755, 1022, 933, 757, 408, 398,
	327, 694, 696, 656, 840, 749, 766, 958, 961, 962,
	963, 959, 328, 960, 964, 708, 1026, 1033, 1025, 913,
	655, 743, 825, 778, 616, 455, 966, 393, 779, 717,
	72, 267, 268, 785, 261, 998, 799, 716, 409, 804,
	493, 494, 486, 487, 488, 489, 490, 491, 492, 485,
	816, 262, 495, 55, 997, 953, 246, 571, 460, 465,
	312, 310, 276, 275, 275, 974, 929, 469, 57, 59,
	52, 519, 1, 843, 814, 582, 577, 835, 564, 565,
	295, 284, 581, 72, 802, 794, 761, 982, 927, 845,
	589, 826, 751, 836, 592, 739, 578, 839, 1023, 848,
	837, 834, 748, 812, 833, 414, 72, 791, 246, 415,
	413, 417, 284, 416, 412, 138, 278, 965, 856, 857,
	693, 969, 796, 67, 867, 768, 767, 484, 483, 493,
	494, 486, 487, 488, 489, 490, 491, 492, 485, 72,
	618, 495, 503, 874, 72, 799, 715, 283, 284, 404,
	284, 729, 786, 787, 788, 880, 869, 872, 866, 902,
	691, 881, 885, 544, 792, 246, 875, 897, 793, 910,
	275, 898, 72, 72, 884, 385, 996, 952, 918, 919,
	905, 805, 806, 807, 914, 900, 811, 693, 883, 726,
	904, 817, 813, 818, 819, 820, 821, 527, 920, 704,
	275, 912, 338, 275, 646, 349, 346, 348, 347, 550,
	556, 828, 829, 830, 477, 336, 330, 911, 1013, 909,
	727, 395, 957, 917, 955, 449, 908, 823, 275, 275,
	275, 464, 949, 457, 1027, 554, 24, 275, 56, 275,
	275, 275, 916, 272, 14, 20, 941, 951, 15, 13,
	12, 28, 246, 246, 10, 9, 910, 8, 7, 6,
	5, 4, 72, 274, 263, 22, 72, 2, 284, 975,
	19, 18, 845, 978, 981, 17, 72, 726, 879, 16,
	867, 11, 284, 877, 878, 0, 0, 0, 0, 0,
	0, 0, 948, 0, 885, 246, 246, 246, 246, 910,
	910, 910, 910, 0, 968, 1000, 246, 1002, 727, 246,
	48, 0, 246, 910, 866, 1010, 0, 0, 72, 1017,
	564, 565, 921, 275, 1020, 566, 568, 1018, 999, 976,
	1001, 0, 0, 0, 0, 0, 991, 0, 307, 308,
	1031, 1030, 519, 0, 0, 0, 0, 911, 911, 911,
	911, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	926, 968, 0, 0, 0, 0, 0, 0, 936, 934,
	937, 0, 0, 0, 0, 0, 1045, 1046, 0, 0,
	697, 946, 947, 275, 0, 0, 0, 275, 72, 72,
	72, 1055, 1056, 0, 1054, 1054, 1054, 0, 0, 0,
	72, 0, 938, 939, 0, 940, 1063, 0, 942, 0,
	944, 0, 484, 483, 493, 494, 486, 487, 488, 489,
	490, 491, 492, 485, 0, 0, 495, 0, 0, 1047,
	1048, 1049, 0, 994, 0, 0, 0, 0, 0, 0,
	0, 993, 690, 568, 0, 320, 0, 0, 690, 690,
	0, 1012, 690, 790, 0, 0, 0, 0, 0, 0,
	1019, 0, 0, 0, 0, 0, 690, 690, 690, 690,
	0, 0, 0, 0, 0, 397, 0, 0, 400, 0,
	0, 690, 0, 0, 566, 484, 483, 493, 494, 486,
	487, 488, 489, 490, 491, 492, 485, 0, 0, 495,
	0, 0, 0, 452, 453, 454, 0, 0, 0, 0,
	0, 1041, 458, 0, 461, 462, 463, 420, 483, 493,
	494, 486, 487, 488, 489, 490, 491, 492, 485, 0,
	0, 495, 0, 0, 0, 0, 0, 1058, 0, 1060,
	1061, 0, 432, 0, 275, 0, 0, 437, 438, 439,
	440, 441, 442, 443, 0, 444, 445, 446, 447, 448,
	433, 434, 435, 436, 418, 419, 0, 0, 421, 0,
	0, 422, 423, 424, 425, 426, 427, 428, 429, 430,
	431, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 561, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 690, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	690, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 275, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 104, 633, 566,
	0, 568, 636, 0, 0, 0, 84, 0, 0, 0,
	0, 0, 0, 89, 0, 0, 0, 95, 0, 0,
	110, 101, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 275, 0, 0, 0, 71, 0,
	0, 0, 0, 0, 0, 0, 0, 79, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 690, 0, 0, 0, 0, 0, 568, 690,
	0, 0, 0, 484, 483, 493, 494, 486, 487, 488,
	489, 490, 491, 492, 485, 0, 0, 495, 0, 0,
	0, 275, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 124, 0, 0, 0, 0, 0, 106, 0,
	0, 0, 0, 80, 0, 109, 105, 119, 75, 117,
	112, 99, 91, 92, 74, 0, 108, 83, 88, 82,
	103, 114, 115, 81, 129, 78, 123, 77, 0, 122,
	102, 0, 113, 118, 100, 97, 76, 116, 98, 96,
	93, 85, 0, 0, 0, 111, 120, 130, 0, 765,
	125, 126, 127, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 275, 972,
	0, 0, 0, 0, 0, 73, 0, 94, 128, 107,
	87, 121, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 86, 0, 0, 0, 0, 0, 90, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 275, 275, 275, 275, 0, 0, 0, 0, 0,
	0, 0, 1011, 0, 0, 275, 0, 0, 972, 0,
	0, 566, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 822, 231, 222,
	193, 233, 170, 185, 242, 186, 187, 214, 157, 201,
	104, 183, 0, 173, 152, 180, 153, 171, 195, 84,
	198, 169, 224, 204, 291, 0, 89, 0, 0, 239,
	95, 208, 0, 110, 101, 0, 0, 197, 226, 199,
	221, 192, 215, 163, 207, 234, 184, 212, 0, 868,
	0, 71, 0, 0, 0, 0, 0, 0, 0, 0,
	79, 210, 229, 182, 211, 213, 151, 209, 0, 155,
	158, 241, 227, 176, 177, 0, 0, 0, 0, 0,
	0, 0, 196, 200, 218, 190, 0, 0, 0, 0,
	0, 0, 0, 0, 174, 0, 206, 0, 0, 0,
	161, 156, 194, 0, 0, 0, 290, 0, 175, 219,
	0, 0, 0, 292, 191, 124, 228, 189, 188, 232,
	235, 106, 0, 225, 172, 181, 80, 179, 109, 105,
	119, 75, 117, 112, 99, 91, 92, 74, 0, 108,
	83, 88, 82, 103, 114, 115, 81, 129, 78, 123,
	77, 287, 122, 102, 286, 113, 118, 100, 97, 76,
	116, 98, 96, 93, 85, 0, 154, 0, 111, 120,
	130, 168, 293, 125, 126, 127, 0, 0, 0, 0,
	0, 0, 289, 166, 167, 164, 165, 202, 203, 236,
	237, 238, 220, 162, 0, 0, 223, 205, 73, 0,
	94, 128, 107, 87, 121, 0, 0, 0, 0, 178,
	240, 217, 216, 230, 0, 86, 0, 0, 0, 0,
	0, 281, 280, 288, 231, 222, 193, 233, 170, 185,
	242, 186, 187, 214, 157, 201, 104, 183, 0, 173,
	152, 180, 153, 171, 195, 84, 198, 169, 224, 204,
	140, 0, 89, 0, 0, 239, 95, 208, 0, 110,
	101, 0, 0, 197, 226, 199, 221, 192, 215, 163,
	207, 234, 184, 212, 0, 0, 0, 148, 0, 0,
	0, 0, 0, 0, 0, 0, 79, 210, 229, 182,
	211, 213, 151, 209, 0, 155, 158, 241, 227, 176,
	177, 0, 0, 0, 0, 0, 0, 0, 196, 200,
	218, 190, 0, 0, 0, 0, 0, 0, 0, 0,
	174, 0, 206, 0, 0, 0, 161, 156, 194, 0,
	0, 0, 142, 0, 175, 219, 0, 0, 0, 147,
	191, 124, 228, 189, 188, 232, 235, 106, 0, 225,
	172, 181, 80, 179, 109, 105, 119, 75, 117, 112,
	99, 91, 92, 74, 0, 108, 83, 88, 82, 103,
	114, 115, 81, 129, 78, 123, 77, 159, 122, 102,
	160, 113, 118, 100, 97, 76, 116, 98, 96, 93,
	85, 0, 154, 0, 111, 120, 130, 168, 139, 125,
	126, 127, 143, 144, 0, 145, 0, 146, 141, 166,
	167, 164, 165, 202, 203, 236, 237, 238, 220, 162,
	0, 0, 223, 205, 73, 0, 94, 128, 107, 87,
	121, 0, 0, 0, 0, 178, 240, 217, 216, 230,
	0, 86, 0, 0, 0, 0, 0, 90, 231, 222,
	193, 233, 170, 185, 242, 186, 187, 214, 157, 201,
	104, 183, 0, 173, 152, 180, 153, 171, 195, 84,
	198, 169, 224, 204, 291, 0, 89, 0, 0, 239,
	95, 208, 0, 110, 101, 0, 0, 197, 226, 199,
	221, 192, 215, 163, 207, 234, 184, 212, 0, 0,
	0, 71, 0, 0, 0, 0, 0, 0, 0, 0,
	79, 210, 229, 182, 211, 213, 151, 209, 0, 155,
	158, 241, 227, 176, 177, 0, 0, 0, 0, 0,
	0, 0, 196, 200, 218, 190, 0, 0, 0, 0,
	0, 0, 0, 0, 174, 0, 206, 0, 0, 0,
	161, 156, 194, 0, 0, 0, 290, 0, 175, 219,
	0, 0, 0, 292, 191, 124, 228, 189, 188, 232,
	235, 106, 0, 225, 172, 181, 80, 179, 109, 105,
	119, 75, 117, 112, 99, 91, 92, 74, 0, 108,
	83, 88, 82, 103, 114, 115, 81, 129, 78, 123,
	77, 287, 122, 102, 286, 113, 118, 100, 97, 76,
	116, 98, 96, 93, 85, 0, 154, 0, 111, 120,
	130, 168, 293, 125, 126, 127, 0, 0, 0, 0,
	0, 0, 289, 166, 167, 164, 165, 202, 203, 236,
	237, 238, 220, 162, 0, 0, 223, 205, 73, 0,
	94, 128, 107, 87, 121, 0, 0, 0, 0, 178,
	240, 217, 216, 230, 0, 86, 0, 0, 0, 0,
	0, 90, 0, 288, 231, 222, 193, 233, 170, 185,
	242, 186, 187, 214, 157, 201, 104, 183, 0, 173,
	152, 180, 153, 171, 195, 84, 198, 169, 224, 204,
	291, 0, 89, 0, 0, 239, 95, 208, 0, 110,
	101, 0, 0, 197, 226, 199, 221, 192, 215, 163,
	207, 234, 184, 212, 0, 0, 0, 71, 0, 0,
	0, 0, 0, 0, 0, 0, 79, 210, 229, 182,
	211, 213, 151, 209, 0, 155, 158, 241, 227, 176,
	177, 0, 0, 0, 0, 0, 0, 0, 196, 200,
	218, 190, 0, 0, 0, 0, 0, 0, 990, 0,
	174, 0, 206, 0, 0, 0, 161, 156, 194, 0,
	0, 0, 290, 0, 175, 219, 0, 0, 0, 292,
	191, 124, 228, 189, 188, 232, 235, 106, 0, 225,
	172, 181, 80, 179, 109, 105, 119, 75, 117, 112,
	99, 91, 92, 74, 0, 108, 83, 88, 82, 103,
	114, 115, 81, 129, 78, 123, 77, 159, 122, 102,
	160, 113, 118, 100, 97, 76, 116, 98, 96, 93,
	85, 0, 154, 0, 111, 120, 130, 168, 293, 125,
	126, 127, 0, 0, 0, 0, 0, 0, 289, 166,
	167, 164, 165, 202, 203, 236, 237, 238, 220, 162,
	0, 0, 223, 205, 73, 0, 94, 128, 107, 87,
	121, 0, 0, 0, 0, 178, 240, 217, 216, 230,
	0, 86, 0, 0, 0, 0, 0, 90, 231, 222,
	193, 233, 170, 185, 242, 186, 187, 214, 157, 201,
	104, 183, 0, 173, 152, 180, 153, 171, 195, 84,
	198, 169, 224, 204, 291, 0, 89, 0, 0, 239,
	95, 208, 0, 110, 101, 0, 0, 197, 226, 199,
	221, 192, 215, 163, 207, 234, 184, 212, 51, 0,
	0, 71, 0, 0, 0, 0, 0, 0, 0, 0,
	79, 210, 229, 182, 211, 213, 151, 209, 0, 155,
	158, 241, 227, 176, 177, 0, 0, 0, 0, 0,
	0, 0, 196, 200, 218, 190, 0, 0, 0, 0,
	0, 0, 0, 0, 174, 0, 206, 0, 0, 0,
	161, 156, 194, 0, 0, 0, 290, 0, 175, 219,
	0, 0, 0, 292, 191, 124, 228, 189, 188, 232,
	235, 106, 0, 225, 172, 181, 80, 179, 109, 105,
	119, 75, 117, 112, 99, 91, 92, 74, 0, 108,
	83, 88, 82, 103, 114, 115, 81, 129, 78, 123,
	77, 159, 122, 102, 160, 113, 118, 100, 97, 76,
	116, 98, 96, 93, 85, 0, 154, 0, 111, 120,
	130, 168, 293, 125, 126, 127, 0, 0, 0, 0,
	0, 0, 289, 166, 167, 164, 165, 202, 203, 236,
	237, 238, 220, 162, 0, 0, 223, 205, 73, 0,
	94, 128, 107, 87, 121, 0, 0, 0, 0, 178,
	240, 217, 216, 230, 0, 86, 0, 0, 0, 0,
	0, 90, 231, 222, 193, 233, 170, 185, 242, 186,
	187, 214, 157, 201, 104, 183, 0, 173, 152, 180,
	153, 171, 195, 84, 198, 169, 224, 204, 291, 0,
	89, 0, 0, 239, 95, 208, 0, 110, 101, 0,
	0, 197, 226, 199, 221, 192, 215, 163, 207, 234,
	184, 212, 0, 0, 0, 383, 0, 0, 0, 0,
	0, 0, 0, 0, 79, 210, 229, 182, 211, 213,
	151, 209, 0, 155, 158, 241, 227, 176, 177, 0,
	0, 0, 0, 0, 0, 0, 196, 200, 218, 190,
	0, 0, 0, 0, 0, 0, 882, 0, 174, 0,
	206, 0, 0, 0, 161, 156, 194, 0, 0, 0,
	290, 0, 175, 219, 0, 0, 0, 292, 191, 124,
	228, 189, 188, 232, 235, 106, 0, 225, 172, 181,
	80, 179, 109, 105, 119, 75, 117, 112, 99, 91,
	92, 74, 0, 108, 83, 88, 82, 103, 114, 115,
	81, 129, 78, 123, 77, 159, 122, 102, 160, 113,
	118, 100, 97, 76, 116, 98, 96, 93, 85, 0,
	154, 0, 111, 120, 130, 168, 293, 125, 126, 127,
	0, 0, 0, 0, 0, 0, 289, 166, 167, 164,
	165, 202, 203, 236, 237, 238, 220, 162, 0, 0,
	223, 205, 73, 0, 94, 128, 107, 87, 121, 0,
	0, 0, 0, 178, 240, 217, 216, 230, 0, 86,
	0, 0, 0, 0, 0, 90, 231, 222, 193, 233,
	170, 185, 242, 186, 187, 214, 157, 201, 104, 183,
	0, 173, 152, 180, 153, 171, 195, 84, 198, 169,
	224, 204, 291, 0, 89, 0, 0, 239, 95, 208,
	0, 110, 101, 0, 0, 197, 226, 199, 221, 192,
	215, 163, 207, 234, 184, 212, 0, 0, 0, 71,
	0, 0, 0, 0, 0, 0, 0, 0, 79, 210,
	229, 182, 211, 213, 151, 209, 0, 155, 158, 241,
	227, 176, 177, 0, 0, 0, 0, 0, 0, 0,
	196, 200, 218, 190, 0, 0, 0, 0, 0, 0,
	0, 0, 174, 0, 206, 0, 0, 0, 161, 156,
	194, 0, 0, 0, 290, 0, 175, 219, 0, 0,
	0, 292, 191, 124, 228, 189, 188, 232, 235, 106,
	0, 225, 172, 181, 80, 179, 109, 105, 119, 75,
	117, 112, 99, 91, 92, 74, 0, 108, 83, 88,
	82, 103, 114, 115, 81, 129, 78, 123, 77, 159,
	122, 102, 160, 113, 118, 100, 97, 76, 116, 98,
	96, 93, 85, 0, 154, 0, 111, 120, 130, 168,
	293, 125, 126, 127, 0, 0, 0, 0, 0, 0,
	289, 166, 167, 164, 165, 202, 203, 236, 237, 238,
	220, 162, 0, 0, 223, 205, 73, 0, 94, 128,
	107, 87, 121, 0, 0, 0, 0, 178, 240, 217,
	216, 230, 0, 86, 0, 0, 0, 0, 0, 90,
	231, 222, 193, 233, 170, 185, 242, 186, 187, 214,
	157, 201, 104, 183, 0, 173, 152, 180, 153, 171,
	195, 84, 198, 169, 224, 204, 291, 0, 89, 0,
	0, 239, 95, 208, 0, 110, 101, 0, 0, 197,
	226, 199, 221, 192, 215, 163, 207, 234, 184, 212,
	0, 0, 0, 383, 0, 0, 0, 0, 0, 0,
	0, 0, 79, 210, 229, 182, 211, 213, 151, 209,
	0, 155, 158, 241, 227, 176, 177, 0, 0, 0,
	0, 0, 0, 0, 196, 200, 218, 190, 0, 0,
	0, 0, 0, 0, 0, 0, 174, 0, 206, 0,
	0, 0, 161, 156, 194, 0, 0, 0, 290, 0,
	175, 219, 0, 0, 0, 292, 191, 124, 228, 189,
	188, 232, 235, 106, 0, 225, 172, 181, 80, 179,
	109, 105, 119, 75, 117, 112, 99, 91, 92, 74,
	0, 108, 83, 88, 82, 103, 114, 115, 81, 129,
	78, 123, 77, 159, 122, 102, 160, 113, 118, 100,
	97, 76, 116, 98, 96, 93, 85, 0, 154, 0,
	111, 120, 130, 168, 293, 125, 126, 127, 0, 0,
	0, 0, 0, 0, 289, 166, 167, 164, 165, 202,
	203, 236, 237, 238, 220, 162, 0, 0, 223, 205,
	73, 0, 94, 128, 107, 87, 121, 0, 0, 0,
	0, 178, 240, 217, 216, 230, 0, 86, 0, 0,
	0, 0, 0, 90, 231, 222, 193, 233, 170, 185,
	242, 186, 187, 214, 157, 201, 104, 183, 0, 173,
	152, 180, 153, 171, 195, 84, 198, 169, 224, 204,
	291, 0, 89, 0, 0, 239, 95, 208, 0, 110,
	101, 0, 0, 197, 226, 199, 221, 192, 215, 163,
	207, 234, 184, 212, 0, 0, 0, 245, 0, 0,
	0, 0, 0, 0, 0, 0, 79, 210, 229, 182,
	211, 213, 151, 209, 0, 155, 158, 241, 227, 176,
	177, 0, 0, 0, 0, 0, 0, 0, 196, 200,
	218, 190, 0, 0, 0, 0, 0, 0, 0, 0,
	174, 0, 206, 0, 0, 0, 161, 156, 194, 0,
	0, 0, 290, 0, 175, 219, 0, 0, 0, 292,
	191, 124, 228, 189, 188, 232, 235, 106, 0, 225,
	172, 181, 80, 179, 109, 105, 119, 75, 117, 112,
	99, 91, 92, 74, 0, 108, 83, 88, 82, 103,
	114, 115, 81, 129, 78, 123, 77, 159, 122, 102,
	160, 113, 118, 100, 97, 76, 116, 98, 96, 93,
	85, 0, 154, 0, 111, 120, 130, 168, 293, 125,
	126, 127, 0, 0, 0, 0, 0, 0, 289, 166,
	167, 164, 165, 202, 203, 236, 237, 238, 220, 162,
	0, 0, 223, 205, 73, 0, 94, 128, 107, 87,
	121, 0, 0, 0, 0, 178, 240, 217, 216, 230,
	104, 86, 0, 685, 0, 334, 0, 90, 0, 84,
	0, 333, 0, 0, 0, 0, 89, 0, 0, 370,
	95, 0, 0, 110, 101, 0, 0, 0, 0, 363,
	364, 0, 0, 0, 0, 0, 0, 0, 51, 0,
	0, 383, 351, 350, 352, 353, 354, 355, 0, 0,
	79, 356, 357, 358, 0, 0, 0, 331, 344, 0,
	369, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	341, 342, 688, 0, 0, 0, 381, 0, 343, 0,
	0, 340, 345, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 124, 0, 0, 379, 0,
	0, 106, 0, 0, 0, 0, 80, 0, 109, 105,
	119, 75, 117, 112, 99, 91, 92, 74, 0, 108,
	83, 88, 82, 103, 114, 115, 81, 129, 78, 123,
	77, 0, 122, 102, 0, 113, 118, 100, 97, 76,
	116, 98, 96, 93, 85, 0, 0, 0, 111, 120,
	130, 0, 0, 125, 126, 127, 0, 0, 0, 0,
	0, 0, 0, 371, 380, 377, 378, 375, 376, 374,
	373, 372, 382, 365, 366, 368, 0, 367, 73, 0,
	94, 128, 107, 87, 121, 0, 0, 104, 0, 0,
	0, 0, 334, 0, 0, 86, 84, 0, 333, 0,
	0, 90, 0, 89, 0, 0, 370, 95, 0, 0,
	110, 101, 0, 0, 0, 0, 363, 364, 0, 0,
	0, 0, 0, 0, 0, 51, 0, 0, 383, 351,
	350, 352, 353, 354, 355, 0, 0, 79, 356, 357,
	358, 0, 0, 0, 331, 344, 0, 369, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 341, 342, 688,
	0, 0, 0, 381, 0, 343, 0, 0, 340, 345,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 124, 0, 0, 379, 0, 0, 106, 0,
	0, 0, 0, 80, 0, 109, 105, 119, 75, 117,
	112, 99, 91, 92, 74, 0, 108, 83, 88, 82,
	103, 114, 115, 81, 129, 78, 123, 77, 0, 122,
	102, 0, 113, 118, 100, 97, 76, 116, 98, 96,
	93, 85, 0, 0, 0, 111, 120, 130, 0, 0,
	125, 126, 127, 0, 0, 0, 0, 0, 0, 0,
	371, 380, 377, 378, 375, 376, 374, 373, 372, 382,
	365, 366, 368, 0, 367, 73, 0, 94, 128, 107,
	87, 121, 0, 0, 104, 0, 0, 0, 0, 334,
	0, 0, 86, 84, 0, 333, 0, 0, 90, 0,
	89, 0, 0, 370, 95, 0, 0, 110, 101, 0,
	0, 0, 0, 363, 364, 0, 0, 0, 0, 0,
	0, 0, 51, 0, 325, 383, 351, 350, 352, 353,
	354, 355, 0, 0, 79, 356, 357, 358, 0, 0,
	0, 331, 344, 0, 369, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 341, 342, 0, 0, 0, 0,
	381, 0, 343, 0, 0, 340, 345, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 124,
	0, 0, 379, 0, 0, 106, 0, 0, 0, 0,
	80, 0, 109, 105, 119, 75, 117, 112, 99, 91,
	92, 74, 0, 108, 83, 88, 82, 103, 114, 115,
	81, 129, 78, 123, 77, 0, 122, 102, 0, 113,
	118, 100, 97, 76, 116, 98, 96, 93, 85, 0,
	0, 0, 111, 120, 130, 0, 0, 125, 126, 127,
	0, 0, 0, 0, 0, 0, 0, 371, 380, 377,
	378, 375, 376, 374, 373, 372, 382, 365, 366, 368,
	23, 367, 73, 0, 94, 128, 107, 87, 121, 0,
	0, 104, 0, 0, 0, 0, 334, 0, 0, 86,
	84, 0, 333, 0, 0, 90, 0, 89, 0, 0,
	370, 95, 0, 0, 110, 101, 0, 0, 0, 0,
	363, 364, 0, 0, 0, 0, 0, 0, 0, 51,
	0, 0, 383, 351, 350, 352, 353, 354, 355, 0,
	0, 79, 356, 357, 358, 0, 0, 0, 331, 344,
	0, 369, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 341, 342, 0, 0, 0, 0, 381, 0, 343,
	0, 0, 340, 345, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 124, 0, 0, 379,
	0, 0, 106, 0, 0, 0, 0, 80, 0, 109,
	105, 119, 75, 117, 112, 99, 91, 92, 74, 0,
	108, 83, 88, 82, 103, 114, 115, 81, 129, 78,
	123, 77, 0, 122, 102, 0, 113, 118, 100, 97,
	76, 116, 98, 96, 93, 85, 0, 0, 0, 111,
	120, 130, 0, 0, 125, 126, 127, 0, 0, 0,
	0, 0, 0, 0, 371, 380, 377, 378, 375, 376,
	374, 373, 372, 382, 365, 366, 368, 0, 367, 73,
	0, 94, 128, 107, 87, 121, 0, 0, 104, 0,
	0, 0, 0, 334, 0, 0, 86, 84, 0, 333,
	0, 0, 90, 0, 89, 0, 0, 370, 95, 0,
	0, 110, 101, 0, 0, 0, 0, 363, 364, 0,
	0, 0, 0, 0, 0, 0, 51, 0, 0, 383,
	351, 350, 352, 353, 354, 355, 0, 0, 79, 356,
	357, 358, 0, 0, 0, 331, 344, 0, 369, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 341, 342,
	0, 0, 0, 0, 381, 0, 343, 0, 0, 340,
	345, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 124, 0, 0, 379, 0, 0, 106,
	0, 0, 0, 0, 80, 0, 109, 105, 119, 75,
	117, 112, 99, 91, 92, 74, 0, 108, 83, 88,
	82, 103, 114, 115, 81, 129, 78, 123, 77, 0,
	122, 102, 0, 113, 118, 100, 97, 76, 116, 98,
	96, 93, 85, 0, 0, 0, 111, 120, 130, 0,
	0, 125, 126, 127, 0, 0, 0, 0, 0, 0,
	0, 371, 380, 377, 378, 375, 376, 374, 373, 372,
	382, 365, 366, 368, 0, 367, 73, 0, 94, 128,
	107, 87, 121, 0, 0, 104, 0, 0, 0, 0,
	0, 0, 0, 86, 84, 0, 0, 0, 0, 90,
	0, 89, 0, 0, 370, 95, 0, 0, 110, 101,
	0, 0, 0, 0, 363, 364, 0, 0, 0, 0,
	0, 0, 0, 51, 0, 0, 383, 351, 350, 352,
	353, 354, 355, 0, 0, 79, 356, 357, 358, 0,
	0, 0, 0, 344, 0, 369, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 341, 342, 0, 0, 0,
	0, 381, 0, 343, 0, 0, 340, 345, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	124, 0, 0, 379, 0, 0, 106, 0, 0, 0,
	0, 80, 0, 109, 105, 119, 75, 117, 112, 99,
	91, 92, 74, 0, 108, 83, 88, 82, 103, 114,
	115, 81, 129, 78, 123, 77, 0, 122, 102, 0,
	113, 118, 100, 97, 76, 116, 98, 96, 93, 85,
	0, 0, 0, 111, 120, 130, 0, 0, 125, 126,
	127, 0, 0, 0, 0, 0, 0, 0, 371, 380,
	377, 378, 375, 376, 374, 373, 372, 382, 365, 366,
	368, 0, 367, 73, 0, 94, 128, 107, 87, 121,
	0, 0, 104, 0, 0, 0, 798, 0, 0, 0,
	86, 84, 0, 0, 0, 0, 90, 0, 89, 0,
	0, 0, 95, 0, 0, 110, 101, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 71, 0, 800, 0, 0, 0, 0,
	0, 0, 79, 0, 0, 0, 0, 472, 471, 0,
	0, 0, 0, 0, 0, 0, 0, 479, 0, 482,
	0, 0, 0, 0, 473, 496, 497, 498, 499, 500,
	501, 502, 0, 480, 481, 478, 484, 483, 493, 494,
	486, 487, 488, 489, 490, 491, 492, 485, 0, 0,
	495, 0, 0, 0, 0, 0, 0, 124, 0, 0,
	0, 0, 0, 106, 0, 0, 0, 0, 80, 0,
	109, 105, 119, 75, 117, 112, 99, 91, 92, 74,
	0, 108, 83, 88, 82, 103, 114, 115, 81, 129,
	78, 123, 77, 0, 122, 102, 0, 113, 118, 100,
	97, 76, 116, 98, 96, 93, 85, 0, 0, 104,
	111, 120, 130, 0, 0, 125, 126, 127, 84, 0,
	0, 0, 0, 0, 0, 89, 0, 0, 0, 95,
	0, 0, 110, 101, 0, 0, 0, 0, 0, 0,
	73, 0, 94, 128, 107, 87, 121, 0, 0, 0,
	71, 0, 0, 0, 0, 0, 0, 86, 0, 79,
	0, 0, 0, 90, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 68, 0, 124, 0, 0, 0, 69, 0,
	106, 0, 0, 0, 0, 80, 0, 109, 105, 119,
	75, 117, 112, 99, 91, 92, 74, 0, 108, 83,
	88, 82, 103, 114, 115, 81, 129, 78, 123, 77,
	0, 122, 102, 0, 113, 118, 100, 97, 76, 116,
	98, 96, 93, 85, 0, 0, 0, 111, 120, 130,
	0, 0, 125, 126, 127, 0, 0, 0, 23, 0,
	0, 0, 0, 66, 0, 0, 0, 0, 0, 104,
	0, 0, 0, 0, 0, 0, 0, 73, 84, 94,
	128, 107, 87, 121, 0, 89, 0, 0, 0, 95,
	0, 0, 110, 101, 86, 0, 0, 0, 0, 0,
	90, 0, 0, 0, 0, 0, 0, 51, 0, 0,
	245, 0, 0, 0, 0, 0, 0, 0, 0, 79,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 124, 0, 0, 0, 0, 0,
	106, 0, 0, 0, 0, 80, 0, 109, 105, 119,
	75, 117, 112, 99, 91, 92, 74, 0, 108, 83,
	88, 82, 103, 114, 115, 81, 129, 78, 123, 77,
	0, 122, 102, 0, 113, 118, 100, 97, 76, 116,
	98, 96, 93, 85, 0, 0, 104, 111, 120, 130,
	971, 0, 125, 126, 127, 84, 0, 0, 0, 0,
	0, 0, 89, 0, 0, 0, 95, 0, 0, 110,
	101, 0, 0, 0, 0, 0, 0, 73, 0, 94,
	128, 107, 87, 121, 0, 0, 0, 245, 0, 973,
	0, 0, 0, 0, 86, 0, 79, 0, 0, 0,
	90, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 124, 0, 0, 0, 0, 0, 106, 0, 0,
	0, 0, 80, 0, 109, 105, 119, 75, 117, 112,
	99, 91, 92, 74, 0, 108, 83, 88, 82, 103,
	114, 115, 81, 129, 78, 123, 77, 0, 122, 102,
	0, 113, 118, 100, 97, 76, 116, 98, 96, 93,
	85, 0, 0, 0, 111, 120, 130, 0, 0, 125,
	126, 127, 0, 0, 0, 23, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 104, 0, 0, 0,
	0, 0, 0, 0, 73, 84, 94, 128, 107, 87,
	121, 0, 89, 0, 0, 0, 95, 0, 0, 110,
	101, 86, 0, 0, 0, 0, 0, 90, 0, 0,
	0, 0, 0, 0, 51, 0, 0, 71, 0, 0,
	0, 0, 0, 0, 0, 0, 79, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 124, 0, 0, 0, 0, 0, 106, 0, 0,
	0, 0, 80, 0, 109, 105, 119, 75, 117, 112,
	99, 91, 92, 74, 0, 108, 83, 88, 82, 103,
	114, 115, 81, 129, 78, 123, 77, 0, 122, 102,
	0, 113, 118, 100, 97, 76, 116, 98, 96, 93,
	85, 0, 0, 104, 111, 120, 130, 0, 0, 125,
	126, 127, 84, 0, 0, 0, 0, 0, 0, 89,
	0, 0, 0, 95, 0, 0, 110, 101, 0, 0,
	0, 0, 0, 0, 73, 0, 94, 128, 107, 87,
	121, 0, 0, 0, 71, 0, 0, 552, 0, 0,
	553, 86, 0, 79, 0, 0, 0, 90, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 124, 0,
	0, 0, 0, 0, 106, 0, 0, 0, 0, 80,
	0, 109, 105, 119, 75, 117, 112, 99, 91, 92,
	74, 0, 108, 83, 88, 82, 103, 114, 115, 81,
	129, 78, 123, 77, 0, 122, 102, 0, 113, 118,
	100, 97, 76, 116, 98, 96, 93, 85, 0, 0,
	104, 111, 120, 130, 0, 0, 125, 126, 127, 84,
	0, 407, 0, 0, 0, 0, 89, 0, 0, 0,
	95, 0, 0, 110, 101, 0, 0, 0, 0, 0,
	0, 73, 0, 94, 128, 107, 87, 121, 0, 0,
	0, 71, 0, 406, 0, 0, 0, 0, 86, 0,
	79, 0, 0, 0, 90, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 124, 0, 0, 0, 0,
	0, 106, 0, 0, 0, 0, 80, 0, 109, 105,
	119, 75, 117, 112, 99, 91, 92, 74, 0, 108,
	83, 88, 82, 103, 114, 115, 81, 129, 78, 123,
	77, 0, 122, 102, 0, 113, 118, 100, 97, 76,
	116, 98, 96, 93, 85, 0, 0, 104, 111, 120,
	130, 0, 0, 125, 126, 127, 84, 0, 0, 0,
	0, 0, 0, 89, 0, 0, 0, 95, 0, 0,
	110, 101, 0, 0, 0, 0, 0, 0, 73, 0,
	94, 128, 107, 87, 121, 0, 0, 0, 245, 0,
	973, 0, 0, 0, 0, 86, 0, 79, 0, 0,
	0, 90, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 124, 0, 0, 0, 0, 0, 106, 0,
	0, 0, 0, 80, 0, 109, 105, 119, 75, 117,
	112, 99, 91, 92, 74, 0, 108, 83, 88, 82,
	103, 114, 115, 81, 129, 78, 123, 77, 0, 122,
	102, 0, 113, 118, 100, 97, 76, 116, 98, 96,
	93, 85, 0, 0, 104, 111, 120, 130, 0, 0,
	125, 126, 127, 84, 0, 0, 0, 0, 0, 0,
	89, 0, 0, 0, 95, 0, 0, 110, 101, 0,
	0, 0, 0, 0, 0, 73, 0, 94, 128, 107,
	87, 121, 51, 0, 0, 245, 0, 0, 0, 0,
	0, 0, 86, 0, 79, 0, 0, 0, 90, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 124,
	0, 0, 0, 0, 0, 106, 0, 0, 0, 0,
	80, 0, 109, 105, 119, 75, 117, 112, 99, 91,
	92, 74, 0, 108, 83, 88, 82, 103, 114, 115,
	81, 129, 78, 123, 77, 0, 122, 102, 0, 113,
	118, 100, 97, 76, 116, 98, 96, 93, 85, 0,
	0, 104, 111, 120, 130, 0, 0, 125, 126, 127,
	84, 0, 0, 0, 0, 0, 0, 89, 0, 0,
	0, 95, 0, 0, 110, 101, 0, 0, 0, 0,
	0, 0, 73, 0, 94, 128, 107, 87, 121, 0,
	0, 0, 71, 0, 800, 0, 0, 0, 0, 86,
	0, 79, 0, 0, 0, 90, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 124, 0, 0, 0,
	0, 0, 106, 0, 0, 0, 0, 80, 0, 109,
	105, 119, 75, 117, 112, 99, 91, 92, 74, 0,
	108, 83, 88, 82, 103, 114, 115, 81, 129, 78,
	123, 77, 0, 122, 102, 0, 113, 118, 100, 97,
	76, 116, 98, 96, 93, 85, 0, 0, 0, 111,
	120, 130, 0, 104, 125, 126, 127, 0, 0, 0,
	0, 396, 84, 0, 0, 0, 0, 0, 0, 89,
	0, 0, 0, 95, 0, 0, 110, 101, 0, 73,
	0, 94, 128, 107, 87, 121, 0, 0, 0, 0,
	0, 0, 0, 0, 245, 0, 86, 0, 0, 0,
	0, 0, 90, 79, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 124, 0,
	0, 0, 0, 0, 106, 0, 0, 0, 0, 80,
	0, 109, 105, 119, 75, 117, 112, 99, 91, 92,
	74, 0, 108, 83, 88, 82, 103, 114, 115, 81,
	129, 78, 123, 77, 0, 122, 102, 0, 113, 118,
	100, 97, 76, 116, 98, 96, 93, 85, 0, 0,
	104, 111, 120, 130, 0, 0, 125, 126, 127, 84,
	0, 0, 0, 0, 0, 0, 89, 0, 0, 0,
	95, 0, 0, 110, 101, 0, 0, 0, 0, 0,
	0, 73, 0, 94, 128, 107, 87, 121, 0, 0,
	0, 71, 0, 0, 0, 0, 0, 0, 86, 0,
	79, 0, 0, 0, 90, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 124, 0, 0, 0, 0,
	0, 106, 0, 0, 0, 0, 80, 0, 109, 105,
	119, 75, 117, 112, 99, 91, 92, 74, 0, 108,
	83, 88, 82, 103, 114, 115, 81, 129, 78, 123,
	77, 0, 122, 102, 0, 113, 118, 100, 97, 76,
	116, 98, 96, 93, 85, 0, 0, 104, 111, 120,
	130, 0, 0, 125, 126, 127, 84, 0, 0, 0,
	0, 0, 0, 89, 0, 0, 0, 95, 0, 0,
	110, 101, 0, 0, 0, 0, 0, 0, 73, 0,
	94, 128, 107, 87, 121, 0, 0, 0, 383, 0,
	0, 0, 0, 0, 0, 86, 0, 79, 0, 0,
	0, 90, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 124, 0, 0, 0, 0, 0, 106, 0,
	0, 0, 0, 80, 0, 109, 105, 119, 75, 117,
	112, 99, 91, 92, 74, 0, 108, 83, 88, 82,
	103, 114, 115, 81, 129, 78, 123, 77, 0, 122,
	102, 0, 113, 118, 100, 97, 76, 116, 98, 96,
	93, 85, 0, 0, 104, 111, 120, 130, 0, 0,
	125, 126, 127, 84, 0, 0, 0, 0, 0, 0,
	89, 0, 0, 0, 95, 0, 0, 110, 101, 0,
	0, 0, 0, 0, 0, 73, 0, 94, 128, 107,
	87, 121, 0, 0, 0, 245, 0, 0, 0, 0,
	0, 0, 86, 0, 79, 0, 0, 0, 90, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 124,
	0, 0, 0, 0, 0, 106, 0, 0, 0, 0,
	80, 0, 109, 105, 119, 75, 117, 112, 99, 91,
	92, 74, 0, 108, 83, 88, 82, 103, 114, 115,
	81, 129, 78, 123, 77, 0, 122, 102, 0, 113,
	118, 100, 97, 76, 116, 98, 96, 93, 85, 0,
	0, 0, 111, 120, 130, 0, 0, 125, 126, 127,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 73, 0, 94, 128, 107, 87, 121, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 86,
	0, 0, 0, 0, 0, 90,
}
var yyPact = [...]int{

	117, -1000, -176, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
	-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
	-1000, 699, 723, -1000, -1000, -1000, -1000, -1000, 499, 4912,
	15, -24, 43, 41, 1799, 37, 6847, -1000, -1000, 18,
	-1000, -167, -1000, -1000, -1000, -1000, -1000, -1000, 549, -1000,
	-1000, -1000, -1000, -1000, 678, 696, 550, 672, 564, -1000,
	15, 6847, 712, 1573, -149, 341, 8, 32, 8, -1000,
	-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
	-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
	-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
	-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
	-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
	-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
	-1000, 28, -1000, 7, 419, 7, 6847, 6847, -1000, 711,
	-76, 710, -31, -1000, -1000, -83, -1000, -89, -1000, -1000,
	-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
	-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
	-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
	-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
	-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
	-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
	-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
	-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
	-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
	-1000, -1000, -1000, 6847, -1000, -1000, -1000, -1000, -1000, -1000,
	296, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 354,
	642, 4361, 4361, 699, -1000, 549, -1000, -1000, -1000, 611,
	-1000, -1000, 232, 6376, 630, 90, 6847, 489, 2023, -1000,
	-1000, -1000, 198, 5743, -1000, -1000, -1000, 629, -1000, -1000,
	-1000, -1000, -1000, -1000, 683, 417, -1000, 1069, 6847, 199,
	414, 6847, 6847, 6847, 663, 523, 6847, -1000, -1000, -1000,
	6847, 708, 6847, 6847, 6847, -1000, -1000, 709, -1000, 708,
	-1000, -1000, -1000, -1000, -1000, -1000, -1000, 719, 153, 233,
	-1000, 4361, 4763, 458, 458, -1000, -1000, 54, -1000, -1000,
	4558, 4558, 4558, 4558, 4558, 4558, -1000, -1000, -1000, -1000,
	-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 458,
	89, -1000, 4164, 458, 458, 458, 458, 458, 458, 4361,
	458, 458, 458, 458, 458, 458, 458, 458, 458, 458,
	458, 458, 458, -1000, -1000, 490, -1000, 219, 678, 354,
	564, 5586, 545, -1000, -1000, 493, 6847, -1000, 6690, 3369,
	706, 2023, 489, 4361, 83, -1000, -1000, -1000, -1000, -153,
	-162, 135, 227, -71, -1000, -1000, 497, -1000, 497, 497,
	497, 497, -43, -43, -43, -43, -1000, -1000, -1000, -1000,
	-1000, 505, -1000, 497, 497, 497, -1000, -1000, -1000, -1000,
	-1000, -1000, -1000, -1000, 503, 503, 503, 498, 498, -1000,
	662, 522, -1000, 40, -1000, -1000, 6847, -1000, -1000, 706,
	6847, -1000, -1000, -1000, 678, -87, -1000, -1000, -1000, -1000,
	581, 4361, 4361, 308, 4361, 4361, 121, 4558, 266, 191,
	4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558,
	4558, 4558, 4558, 4558, 4558, 307, -1000, -1000, -1000, -1000,
	-1000, -1000, -1000, -1000, 413, -1000, 549, 392, 392, 94,
	94, 94, 94, 94, 1300, 3573, 3145, 354, 412, 186,
	4164, 3770, 3770, 4361, 4361, 3770, 667, 190, 186, 6533,
	-1000, 354, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 3770,
	3770, 3770, 3770, 4361, -1000, -1000, -1000, 642, -1000, 667,
	679, -1000, 589, 586, 3770, -1000, 517, 6690, 458, -1000,
	5429, -1000, 476, -1000, 196, -1000, 87, -1000, -1000, -1000,
	699, 4361, -1000, 186, -1000, 404, 458, -1000, -65, 194,
	-1000, -1000, 502, 654, 115, 391, 118, -1000, -1000, 637,
	-1000, 225, -73, -1000, -1000, 273, -43, -43, -1000, -1000,
	83, 628, 83, 83, 83, 334, -1000, -1000, -1000, -1000,
	272, -1000, -1000, -1000, 267, -1000, -1000, 6847, -1000, 149,
	187, 17, 0, -2, -7, -1000, -1000, -1000, -1000, -1000,
	-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
	-1000, 333, -1000, 575, 121, 182, -1000, -1000, 320, -1000,
	-1000, 186, 186, 1052, -1000, -1000, -1000, -1000, 266, 4558,
	4558, 4558, 979, 1052, 694, 605, 1084, 94, 104, 104,
	105, 105, 105, 105, 105, 80, 80, -1000, -1000, -1000,
	354, -1000, -1000, -1000, 354, 3770, 488, -1000, -1000, 4755,
	86, 458, 85, -1000, -1000, 4361, -1000, 354, 385, 385,
	62, 302, 385, 3770, 208, -1000, 4361, 354, -1000, 385,
	354, 385, 385, -1000, -1000, 6847, -1000, -1000, -1000, -1000,
	478, -1000, 656, 462, 469, -1000, -1000, 3967, 354, 408,
	75, 699, 6690, 4361, 3145, 678, 186, -1000, 389, 636,
	178, 378, 6533, -1000, 356, -1000, -1000, 348, 515, 51,
	-1000, -1000, -1000, 428, 83, 83, -1000, 130, -1000, -1000,
	-1000, 402, -1000, 475, 387, 2473, -1000, 6847, -1000, -1000,
	-1000, -1000, -1000, 345, -44, 499, 343, 341, -1000, -1000,
	-1000, -1000, -1000, -1000, -1000, -1000, 979, 1052, 252, -1000,
	4558, 4558, -1000, -1000, 385, 3770, -1000, -1000, 6214, -1000,
	-1000, 2697, 3770, 2921, 186, -1000, -1000, -1000, 209, 307,
	209, -128, 456, 183, -1000, 4361, 247, -1000, -1000, -1000,
	-1000, -1000, -1000, 706, 6057, 652, -1000, 458, -1000, -1000,
	513, 6533, 6533, 678, -1000, 186, -1000, -1000, 354, -1000,
	-51, 251, -1000, 382, -1000, 497, -1000, -1000, -67, 718,
	-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
	-1000, 323, 249, -1000, 248, -1000, -1000, -1000, -1000, -1000,
	-1000, 627, -1000, -1000, -1000, -1000, 4558, 1052, 1052, -1000,
	-1000, -1000, -1000, 65, 354, -1000, 354, 497, 497, -1000,
	497, 498, -1000, 497, -26, 497, -27, 354, 354, 458,
	-122, -1000, 186, 4361, 703, 470, 457, -1000, -1000, -1000,
	665, 5092, 5249, 717, -1000, 458, -1000, 549, 61, -1000,
	-1000, 2473, 164, -1000, -133, 6533, -1000, 109, -1000, -103,
	-1000, 427, 409, 322, 1052, 2249, -1000, -1000, -1000, 70,
	-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 4558, 354,
	321, 186, 701, 680, 6057, 6057, 6057, 6057, -1000, 556,
	554, -1000, 535, 534, 573, 6847, -1000, 353, 5092, 78,
	-1000, 5900, -1000, -1000, 6690, 469, 354, 6533, -1000, 269,
	621, -1000, 220, 651, -1000, 649, -1000, -1000, -1000, -1000,
	-1000, -1000, -1000, 122, -1000, -1000, -1000, 4361, 4361, 457,
	512, 623, -1000, -1000, -1000, -1000, 553, -1000, 547, -1000,
	-1000, -1000, -1000, -1000, 29, 26, 23, -1000, 464, -1000,
	-1000, -1000, 616, -1000, 312, -1000, -1000, 354, 27, -136,
	186, 436, 4361, 4361, -1000, -1000, 458, 458, 458, -1000,
	-1000, -1000, 574, -131, -143, 186, 186, 6533, 6533, 6533,
	-1000, 571, -1000, 339, -1000, 339, 339, -134, -1000, 6533,
	-1000, -1000, -140, -1000, -144, -1000,
}
var yyPgo = [...]int{

	0, 941, 939, 935, 931, 930, 927, 71, 517, 925,
	924, 921, 920, 919, 918, 917, 915, 914, 911, 910,
	909, 908, 905, 904, 57, 903, 898, 896, 38, 895,
	49, 894, 892, 891, 39, 59, 31, 19, 3, 887,
	15, 33, 9, 886, 884, 10, 882, 861, 881, 51,
	879, 878, 2, 26, 876, 875, 874, 870, 42, 152,
	869, 868, 867, 866, 865, 864, 34, 1, 13, 21,
	16, 862, 4, 5, 859, 29, 857, 852, 837, 836,
	32, 835, 43, 823, 24, 40, 811, 27, 12, 28,
	50, 48, 809, 807, 806, 361, 802, 121, 294, 800,
	786, 785, 783, 45, 0, 6, 18, 22, 782, 586,
	46, 7, 781, 777, 47, 11, 17, 776, 20, 775,
	774, 773, 771, 770, 769, 765, 174, 762, 759, 758,
	56, 23, 757, 756, 755, 754, 752, 44, 14, 750,
	748, 747, 746, 25, 742, 65, 41, 740, 736, 735,
	8, 733, 732, 730, 52, 143, 729, 164,
}
var yyR1 = [...]int{

	0, 152, 153, 153, 6, 6, 6, 6, 6, 6,
	6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
	6, 6, 7, 7, 7, 8, 9, 9, 10, 10,
	11, 11, 27, 27, 12, 13, 14, 14, 117, 117,
	15, 15, 15, 15, 18, 146, 148, 133, 133, 132,
	132, 134, 134, 147, 147, 147, 143, 120, 120, 120,
	123, 123, 121, 121, 121, 121, 121, 121, 121, 122,
	122, 122, 122, 122, 124, 124, 124, 124, 124, 125,
	125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
	125, 125, 125, 142, 142, 126, 126, 137, 137, 138,
	138, 138, 135, 135, 136, 136, 139, 139, 139, 127,
	127, 127, 127, 127, 127, 128, 128, 140, 140, 130,
	130, 130, 131, 131, 141, 141, 141, 141, 141, 129,
	129, 144, 144, 149, 149, 149, 149, 149, 145, 145,
	151, 151, 150, 16, 16, 16, 16, 16, 16, 16,
	16, 17, 17, 17, 1, 19, 2, 3, 4, 4,
	5, 5, 5, 5, 119, 119, 119, 20, 20, 20,
	20, 20, 20, 20, 20, 20, 20, 20, 33, 33,
	49, 49, 23, 21, 22, 22, 22, 22, 156, 24,
	25, 25, 26, 26, 26, 30, 30, 30, 28, 28,
	29, 29, 36, 36, 35, 35, 37, 37, 37, 37,
	108, 108, 108, 107, 107, 39, 39, 40, 40, 41,
	41, 42, 42, 42, 50, 43, 43, 43, 43, 113,
	113, 112, 112, 112, 111, 111, 44, 44, 44, 44,
	45, 45, 45, 45, 46, 46, 48, 48, 47, 47,
	51, 51, 51, 51, 52, 52, 53, 53, 38, 38,
	38, 38, 38, 38, 38, 96, 96, 55, 55, 54,
	54, 54, 54, 54, 54, 54, 54, 54, 54, 65,
	65, 65, 65, 65, 65, 56, 56, 56, 56, 56,
	56, 56, 34, 34, 66, 66, 66, 72, 67, 67,
	59, 59, 59, 59, 59, 59, 59, 59, 59, 59,
	59, 59, 59, 59, 59, 59, 59, 59, 59, 59,
	59, 59, 59, 59, 59, 59, 59, 59, 59, 59,
	63, 63, 63, 61, 61, 61, 61, 61, 61, 61,
	61, 61, 62, 62, 62, 62, 62, 62, 62, 62,
	157, 157, 64, 64, 64, 64, 31, 31, 31, 31,
	31, 116, 116, 118, 118, 118, 118, 118, 118, 118,
	118, 118, 118, 118, 118, 118, 76, 76, 32, 32,
	74, 74, 75, 77, 77, 73, 73, 73, 58, 58,
	58, 58, 58, 58, 58, 60, 60, 60, 78, 78,
	79, 79, 80, 80, 81, 81, 82, 83, 83, 83,
	84, 84, 84, 84, 85, 85, 85, 57, 57, 57,
	57, 57, 57, 86, 86, 86, 86, 87, 87, 68,
	68, 70, 70, 69, 71, 88, 88, 89, 90, 90,
	91, 91, 93, 93, 93, 92, 92, 92, 94, 94,
	97, 97, 98, 98, 95, 95, 99, 99, 99, 99,
	99, 99, 99, 99, 99, 99, 100, 100, 100, 101,
	101, 102, 102, 102, 105, 105, 106, 106, 109, 109,
	110, 110, 103, 103, 103, 103, 103, 103, 103, 103,
	103, 103, 103, 103, 103, 103, 103, 103, 103, 103,
	103, 103, 103, 103, 103, 103, 103, 103, 103, 103,
	103, 103, 103, 103, 103, 103, 103, 103, 103, 103,
	103, 103, 103, 103, 103, 103, 103, 103, 103, 103,
	103, 103, 103, 103, 103, 103, 103, 103, 103, 103,
	103, 103, 103, 103, 103, 103, 103, 103, 103, 103,
	103, 103, 103, 103, 103, 103, 103, 103, 103, 103,
	103, 103, 103, 103, 103, 103, 103, 103, 103, 103,
	103, 103, 103, 103, 103, 103, 103, 103, 103, 104,
	104, 104, 104, 104, 104, 104, 104, 104, 104, 104,
	104, 104, 104, 104, 104, 104, 104, 104, 104, 104,
	104, 104, 104, 104, 104, 104, 104, 104, 104, 104,
	104, 104, 104, 104, 104, 104, 104, 104, 104, 104,
	104, 104, 104, 104, 104, 104, 104, 104, 104, 104,
	104, 104, 104, 104, 104, 104, 104, 154, 155, 114,
	115, 115, 115,
}
var yyR2 = [...]int{

	0, 2, 0, 1, 1, 1, 1, 1, 1, 1,
	1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
	1, 1, 4, 6, 7, 10, 1, 3, 1, 3,
	6, 7, 1, 1, 8, 7, 3, 4, 1, 1,
	2, 9, 4, 7, 4, 4, 3, 0, 3, 0,
	4, 0, 3, 1, 3, 3, 8, 3, 1, 1,
	2, 1, 1, 1, 1, 1, 1, 1, 1, 2,
	2, 2, 2, 2, 1, 2, 2, 2, 1, 4,
	4, 2, 2, 3, 3, 3, 3, 1, 1, 1,
	1, 1, 4, 1, 3, 0, 3, 0, 5, 0,
	3, 5, 0, 1, 0, 1, 0, 1, 2, 0,
	2, 2, 2, 2, 2, 0, 3, 0, 1, 0,
	3, 3, 0, 2, 0, 2, 1, 2, 1, 0,
	2, 4, 7, 2, 3, 2, 2, 3, 1, 1,
	1, 3, 2, 6, 7, 7, 7, 9, 7, 7,
	7, 4, 5, 4, 3, 3, 2, 2, 3, 4,
	2, 3, 2, 2, 1, 1, 1, 3, 5, 6,
	5, 5, 5, 3, 3, 6, 3, 5, 0, 3,
	0, 2, 4, 2, 2, 2, 2, 2, 0, 2,
	0, 2, 1, 2, 2, 0, 1, 1, 0, 1,
	0, 1, 0, 1, 1, 3, 1, 2, 3, 5,
	0, 1, 2, 1, 1, 0, 2, 1, 3, 1,
	1, 1, 3, 3, 3, 3, 5, 5, 3, 0,
	1, 0, 1, 2, 1, 1, 1, 2, 2, 1,
	2, 3, 2, 3, 2, 2, 2, 1, 1, 3,
	0, 5, 5, 5, 1, 3, 0, 2, 1, 3,
	3, 2, 3, 1, 2, 0, 3, 1, 1, 3,
	3, 4, 4, 5, 3, 4, 5, 6, 2, 1,
	2, 1, 2, 1, 2, 1, 1, 1, 1, 1,
	1, 1, 0, 2, 1, 1, 1, 3, 1, 3,
	1, 1, 1, 1, 1, 3, 3, 3, 3, 3,
	3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
	2, 2, 2, 2, 2, 3, 1, 1, 1, 1,
	4, 5, 6, 4, 4, 6, 6, 6, 9, 7,
	5, 4, 2, 2, 2, 2, 2, 2, 2, 2,
	0, 2, 4, 4, 4, 4, 0, 3, 4, 7,
	3, 1, 1, 2, 3, 3, 1, 2, 2, 1,
	2, 1, 2, 2, 1, 2, 0, 1, 0, 2,
	1, 2, 4, 0, 2, 1, 3, 5, 1, 1,
	1, 1, 1, 1, 1, 1, 2, 2, 0, 3,
	0, 2, 0, 3, 1, 3, 2, 0, 1, 1,
	0, 2, 4, 4, 0, 2, 4, 2, 1, 3,
	5, 4, 6, 1, 3, 3, 5, 0, 5, 1,
	3, 1, 2, 3, 1, 1, 3, 3, 1, 3,
	3, 3, 1, 2, 1, 1, 1, 1, 1, 1,
	0, 2, 0, 3, 0, 1, 1, 1, 1, 1,
	1, 1, 1, 1, 1, 1, 0, 1, 1, 1,
	1, 0, 1, 1, 1, 1, 1, 1, 1, 1,
	1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
	1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
	1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
	1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
	1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
	1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
	1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
	1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
	1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
	1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
	1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
	1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
	1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
	1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
	1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
	1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
	0, 1, 1,
}
var yyChk = [...]int{

	-1000, -152, -6, -7, -11, -12, -13, -14, -15, -16,
	-17, -1, -19, -20, -23, -21, -2, -3, -4, -5,
	-22, -8, -9, 6, -27, 8, 9, 29, -18, 113,
	114, 115, 137, 117, 130, 32, 52, 215, 132, 221,
	223, 224, 227, 226, 24, 131, 135, 136, -154, 7,
	199, 55, -153, 231, -80, 14, -26, 5, -24, -156,
	-24, -24, -24, -24, -146, 55, 191, -102, 120, 126,
	-105, 58, -104, 205, 144, 138, 166, 157, 155, 67,
	133, 153, 149, 147, 26, 171, 222, 210, 148, 33,
	228, 142, 143, 170, 207, 37, 169, 165, 168, 141,
	164, 41, 160, 150, 17, 136, 128, 209, 146, 135,
	40, 175, 140, 162, 151, 152, 167, 139, 163, 137,
	176, 211, 159, 156, 122, 180, 181, 182, 208, 154,
	177, -95, 124, 120, 121, 191, 120, 120, -119, 179,
	31, 189, 113, 183, 184, 186, 188, 120, 58, -103,
	-104, 73, 21, 23, 173, 76, 108, 15, 77, 158,
	161, 107, 200, 50, 192, 193, 190, 191, 178, 28,
	9, 24, 131, 20, 101, 115, 80, 81, 216, 134,
	22, 132, 70, 18, 53, 10, 12, 13, 125, 124,
	92, 121, 48, 7, 109, 25, 89, 44, 27, 46,
	90, 16, 194, 195, 30, 204, 103, 51, 38, 74,
	68, 71, 54, 72, 14, 49, 219, 218, 91, 116,
	199, 47, 6, 203, 29, 130, 45, 79, 123, 69,
	220, 5, 126, 8, 52, 127, 196, 197, 198, 36,
	217, 78, 11, 120, -109, 58, -104, -114, -114, 61,
	209, -114, 225, -114, -114, -114, -114, -114, -114, -7,
	-84, 16, 15, -10, -8, -154, 6, 19, 20, -30,
	42, 43, -25, -95, -47, -109, 10, -90, -117, -91,
	229, 228, -106, -93, -105, -103, 161, 158, 230, 189,
	113, 31, 120, 179, 212, -147, -143, 58, -98, 125,
	121, -98, 120, -97, 125, 58, -97, -47, -47, -114,
	10, 179, 10, 120, 191, -114, -114, 185, -114, 188,
	-47, -114, 61, -114, -155, 57, -85, 18, 30, -38,
	-54, 74, -59, 28, 22, -58, -55, -73, -71, -72,
	108, 97, 98, 105, 75, 109, -63, -61, -62, -64,
	60, 59, 61, 62, 63, 64, 68, 69, 70, -105,
	-109, -69, -154, 46, 47, 200, 201, 204, 202, 77,
	36, 190, 198, 197, 196, 194, 195, 192, 193, 125,
	191, 103, 199, 58, -104, -81, -82, -38, -80, -7,
	-24, 38, -28, 20, 66, -48, 25, -47, 29, 110,
	-47, 56, -90, 82, -92, -105, 60, 28, 29, 15,
	57, 56, -120, -123, -125, -124, -121, -122, 155, 156,
	108, 159, 162, 163, 164, 165, 166, 167, 168, 169,
	170, 171, 133, 151, 152, 153, 154, 138, 139, 140,
	141, 142, 143, 144, 146, 147, 148, 149, 150, -109,
	74, 58, -47, -47, -47, 22, 54, -109, -47, -49,
	10, -47, -47, -47, -33, 10, -49, -114, -114, 8,
	92, 73, 72, 89, 56, 17, -38, -56, 92, 74,
	90, 91, 76, 94, 93, 104, 97, 98, 99, 100,
	101, 102, 103, 95, 96, 107, 82, 83, 84, 85,
	86, 87, 88, -96, -154, -72, -154, 111, 112, -59,
	-59, -59, -59, -59, -59, -154, 110, -7, -67, -38,
	-154, -154, -154, -154, -154, -154, -154, -76, -38, -154,
	-157, -154, -157, -157, -157, -157, -157, -157, -157, -154,
	-154, -154, -154, 56, -83, 23, 24, -84, -155, -30,
	-60, -105, 61, 64, -29, 45, -57, 29, 36, -7,
	-154, -47, -88, -89, -73, -105, -109, -110, -109, -103,
	-53, 11, -91, -38, -131, 107, 214, -148, -133, 222,
	-143, -144, -149, 128, 126, -145, 33, 121, 27, -139,
	68, 74, -135, 176, -126, 55, -126, -126, -126, -126,
	-130, 158, -130, -130, -130, 55, -126, -126, -126, -137,
	55, -137, -137, -138, 55, -138, 22, 54, -99, 116,
	222, 200, 118, 115, 119, 114, 173, 158, 67, 28,
	14, 211, 58, -47, -114, -53, -47, -114, -114, -114,
	-84, 187, -114, 40, -38, -38, -65, 68, 74, 69,
	70, -38, -38, -59, -66, -69, -72, 65, 92, 90,
	91, 76, -59, -59, -59, -59, -59, -59, -59, -59,
	-59, -59, -59, -59, -59, -59, -59, -116, 58, 60,
	58, -58, -58, -105, -36, 20, -35, -37, 99, -38,
	-109, -106, -110, -103, -155, 56, -155, -7, -35, -35,
	-38, -38, -35, -28, -74, -75, 78, -105, -155, -35,
	-36, -35, -35, -82, -85, -94, 18, 10, 36, 36,
	-35, -87, 54, -88, -68, -70, -69, -154, -7, -86,
	-105, -53, 56, 82, 110, -80, -38, 58, -154, -134,
	173, 82, 55, 27, -145, 58, 58, -145, -127, 28,
	68, -136, 177, 61, -130, -130, -131, 29, -131, -131,
	-131, -142, 60, 61, 61, -47, -114, -100, -101, 123,
	21, 121, 27, 82, 123, 129, 129, 129, -114, -114,
	60, 41, 68, 69, 70, -66, -59, -59, -59, -34,
	134, 73, -155, -155, -35, 56, -108, -107, 21, -105,
	60, 110, -154, 110, -38, -155, -155, -155, 56, 127,
	21, -155, -35, -77, -75, 80, -38, -155, -155, -155,
	-155, -155, -47, -39, 10, 26, -87, 56, -155, -155,
	-155, 56, 110, -80, -89, -38, -106, -84, 58, -132,
	28, 82, 58, -151, -150, -105, 58, 58, -128, 54,
	60, 61, 62, 68, 190, 57, -131, -131, 58, 108,
	57, 56, 56, 57, 56, -115, -154, -106, -47, -114,
	58, 158, -146, 58, -143, -34, 73, -59, -59, -155,
	-37, -107, 99, -110, -36, -106, -118, 108, 155, 133,
	153, 149, 170, 160, 175, 151, 176, -116, -118, 205,
	-80, 81, -38, 79, -53, -40, -41, -42, -43, -50,
	-72, -154, -47, 27, -70, 36, -7, -154, -105, -105,
	-84, -155, 161, 61, 57, 56, -126, -140, 173, 8,
	60, 61, 61, 29, -59, 110, -155, -155, -126, -126,
	-126, -138, -126, 143, -126, 143, -155, -155, -154, -32,
	203, -38, -78, 12, 56, -44, -45, -46, 44, 48,
	50, 45, 46, 47, 51, -113, 21, -40, -154, -112,
	-111, 21, -109, 60, 8, -68, -7, 110, -115, 82,
	208, -150, -141, 128, 27, 126, 190, 57, 57, 58,
	99, -130, 58, -59, -155, 60, -79, 13, 15, -41,
	-42, -41, -42, 44, 44, 44, 49, 44, 49, 44,
	-45, -109, -155, -51, 52, 124, 53, -111, -88, -155,
	-105, 58, 34, -129, 67, 27, 27, -31, 92, 208,
	-38, -67, 54, 54, 44, 44, 121, 121, 121, 35,
	60, -155, 206, 51, 209, -38, -38, -154, -154, -154,
	41, 207, 210, -52, -105, -52, -52, 41, -155, 56,
	-155, -155, 208, -105, 209, 210,
}
var yyDef = [...]int{

	0, -2, 2, -2, 5, 6, 7, 8, 9, 10,
	11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
	21, 402, 0, 188, 188, 188, 188, 188, 0, 471,
	454, 0, 0, 0, 0, 0, 0, 639, 639, 0,
	639, 0, 639, 639, 639, 639, 639, 639, 0, 32,
	33, 637, 1, 3, 410, 0, 0, 192, 195, 190,
	454, 0, 0, 0, 40, 0, 452, 0, 452, 472,
	473, 474, 475, 579, 580, 581, 582, 583, 584, 585,
	586, 587, 588, 589, 590, 591, 592, 593, 594, 595,
	596, 597, 598, 599, 600, 601, 602, 603, 604, 605,
	606, 607, 608, 609, 610, 611, 612, 613, 614, 615,
	616, 617, 618, 619, 620, 621, 622, 623, 624, 625,
	626, 627, 628, 629, 630, 631, 632, 633, 634, 635,
	636, 0, 455, 450, 0, 450, 0, 0, 639, 562,
	519, 493, 495, 639, 639, 0, 639, 561, 164, 165,
	166, 482, 483, 484, 485, 486, 487, 488, 489, 490,
	491, 492, 494, 496, 497, 498, 499, 500, 501, 502,
	503, 504, 505, 506, 507, 508, 509, 510, 511, 512,
	513, 514, 515, 516, 517, 518, 520, 521, 522, 523,
	524, 525, 526, 527, 528, 529, 530, 531, 532, 533,
	534, 535, 536, 537, 538, 539, 540, 541, 542, 543,
	544, 545, 546, 547, 548, 549, 550, 551, 552, 553,
	554, 555, 556, 557, 558, 559, 560, 563, 564, 565,
	566, 567, 568, 569, 570, 571, 572, 573, 574, 575,
	576, 577, 578, 0, 183, 478, 479, 156, 157, 639,
	0, 160, 639, 162, 163, 184, 185, 186, 187, 26,
	414, 0, 0, 402, 28, 0, 188, 193, 194, 198,
	196, 197, 189, 0, 0, 248, 0, 36, 0, 438,
	38, -2, 0, 0, 476, 477, -2, 490, 444, 493,
	495, 519, 561, 562, 0, 0, 53, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 154, 155, 167,
	0, 180, 0, 0, 0, 173, 174, 178, 176, 180,
	639, 158, 639, 161, 27, 638, 22, 0, 0, 411,
	258, 0, 263, 265, 0, 300, 301, 302, 303, 304,
	0, 0, 0, 0, 0, 0, 326, 327, 328, 329,
	388, 389, 390, 391, 392, 393, 394, 267, 268, 385,
	0, 434, 0, 0, 0, 0, 0, 0, 0, 376,
	0, 350, 350, 350, 350, 350, 350, 350, 350, 0,
	0, 0, 0, -2, -2, 403, 404, 407, 410, 26,
	195, 0, 200, 199, 191, 0, 0, 247, 0, 0,
	256, 0, 37, 0, 122, 445, 446, 447, 443, 0,
	47, 0, 106, 102, 58, 59, 95, 61, 95, 95,
	95, 95, 119, 119, 119, 119, 87, 88, 89, 90,
	91, 0, 74, 95, 95, 95, 78, 62, 63, 64,
	65, 66, 67, 68, 97, 97, 97, 99, 99, 42,
	0, 0, 44, 0, 151, 451, 0, 153, 639, 256,
	0, 639, 639, 639, 410, 0, 639, 182, 159, 415,
	0, 0, 0, 0, 0, 0, 261, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 285, 286, 287, 288,
	289, 290, 291, 264, 0, 278, 0, 0, 0, 320,
	321, 322, 323, 324, 0, 202, 0, 26, 0, 298,
	0, 0, 0, 0, 0, 0, 198, 0, 377, 0,
	342, 0, 343, 344, 345, 346, 347, 348, 349, 0,
	202, 0, 0, 0, 406, 408, 409, 414, 29, 198,
	0, 395, 0, 0, 0, 201, 427, 0, 0, -2,
	0, 246, 256, 435, 0, 385, 0, 249, 480, 481,
	402, 0, 439, 440, 441, 0, 0, 45, 51, 0,
	54, 55, 0, 0, 0, 0, 0, 138, 139, 109,
	107, 0, 104, 103, 60, 0, 119, 119, 81, 82,
	122, 0, 122, 122, 122, 0, 75, 76, 77, 69,
	0, 70, 71, 72, 0, 73, 453, 0, 639, 466,
	0, 463, 0, 461, 0, 456, 457, 458, 459, 460,
	462, 464, 465, 152, 168, 639, 181, 170, 171, 172,
	639, 0, 177, 0, 259, 260, 262, 279, 0, 281,
	283, 412, 413, 269, 270, 294, 295, 296, 0, 0,
	0, 0, 292, 274, 0, 305, 306, 307, 308, 309,
	310, 311, 312, 313, 314, 315, 316, 319, 361, 362,
	0, 317, 318, 325, 0, 0, 203, 204, 206, 210,
	0, 386, 0, -2, 297, 0, 433, 26, 0, 0,
	0, 0, 0, 0, 383, 380, 0, 0, 351, 0,
	0, 0, 0, 405, 23, 0, 448, 449, 396, 397,
	215, 30, 0, 427, 417, 429, 431, 0, 26, 0,
	423, 402, 0, 0, 0, 410, 257, 123, 0, 49,
	0, 0, 0, 133, 0, 135, 136, 0, 115, 0,
	108, 57, 105, 0, 122, 122, 83, 0, 84, 85,
	86, 0, 93, 0, 0, 640, 143, 0, 639, 467,
	468, 469, 470, 0, 0, 0, 0, 0, 169, 175,
	179, 416, 280, 282, 284, 271, 292, 275, 0, 272,
	0, 0, 266, 330, 0, 0, 207, 211, 0, 213,
	214, 0, 202, 0, 299, -2, 333, 334, 0, 0,
	0, 0, 402, 0, 381, 0, 0, 341, 352, 353,
	354, 355, 24, 256, 0, 0, 31, 0, 432, -2,
	0, 0, 0, 410, 436, 437, 386, 35, 0, 46,
	0, 0, 48, 0, 140, 95, 134, 137, 117, 0,
	110, 111, 112, 113, 114, 96, 79, 80, 120, 121,
	92, 0, 0, 100, 0, 43, 641, 642, 144, 145,
	146, 0, 148, 149, 150, 273, 0, 293, 276, 331,
	205, 212, 208, 0, 0, 387, 0, 95, 95, 366,
	95, 99, 369, 95, 371, 95, 374, 0, 0, 0,
	378, 340, 384, 0, 398, 216, 217, 219, 220, 221,
	229, 0, 231, 0, 430, 0, -2, 0, 425, 424,
	34, 640, 0, 52, 131, 0, 142, 124, 118, 0,
	94, 0, 0, 0, 277, 0, 332, 335, 363, 119,
	367, 368, 370, 372, 373, 375, 337, 336, 0, 0,
	0, 382, 400, 0, 0, 0, 0, 0, 236, 0,
	0, 239, 0, 0, 0, 0, 230, 0, 0, 250,
	232, 0, 234, 235, 0, 420, 26, 0, 41, 0,
	0, 141, 129, 0, 126, 128, 116, 98, 101, 147,
	209, 364, 365, 356, 339, 379, 25, 0, 0, 218,
	225, 0, 228, 237, 238, 240, 0, 242, 0, 244,
	245, 222, 223, 224, 0, 0, 0, 233, 428, -2,
	426, 50, 0, 56, 0, 125, 127, 0, 0, 0,
	401, 399, 0, 0, 241, 243, 0, 0, 0, 132,
	130, 338, 0, 0, 0, 226, 227, 0, 0, 0,
	357, 0, 360, 0, 254, 0, 0, 358, 251, 0,
	252, 253, 0, 255, 0, 359,
}
var yyTok1 = [...]int{

	1, 3, 3, 3, 3, 3, 3, 3, 3, 3,
	3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
	3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
	3, 3, 3, 75, 3, 3, 3, 102, 94, 3,
	55, 57, 99, 97, 56, 98, 110, 100, 3, 3,
	3, 3, 3, 3, 3, 3, 3, 3, 3, 231,
	83, 82, 84, 3, 3, 3, 3, 3, 3, 3,
	3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
	3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
	3, 3, 3, 3, 104, 3, 3, 3, 3, 3,
	3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
	3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
	3, 3, 3, 3, 93, 3, 105,
}
var yyTok2 = [...]int{

	2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
	12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
	22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
	32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
	42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
	52, 53, 54, 58, 59, 60, 61, 62, 63, 64,
	65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
	76, 77, 78, 79, 80, 81, 85, 86, 87, 88,
	89, 90, 91, 92, 95, 96, 101, 103, 106, 107,
	108, 109, 111, 112, 113, 114, 115, 116, 117, 118,
	119, 120, 121, 122, 123, 124, 125, 126, 127, 128,
	129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
	139, 140, 141, 142, 143, 144, 145, 146, 147, 148,
	149, 150, 151, 152, 153, 154, 155, 156, 157, 158,
	159, 160, 161, 162, 163, 164, 165, 166, 167, 168,
	169, 170, 171, 172, 173, 174, 175, 176, 177, 178,
	179, 180, 181, 182, 183, 184, 185, 186, 187, 188,
	189, 190, 191, 192, 193, 194, 195, 196, 197, 198,
	199, 200, 201, 202, 203, 204, 205, 206, 207, 208,
	209, 210, 211, 212, 213, 214, 215, 216, 217, 218,
	219, 220, 221, 222, 223, 224, 225, 226, 227, 228,
	229, 230,
}
var yyTok3 = [...]int{
	0,
}

var yyErrorMessages = [...]struct {
	state int
	token int
	msg   string
}{}

//line yaccpar:1

/*	parser for yacc output	*/

var (
	yyDebug        = 0
	yyErrorVerbose = false
)

type yyLexer interface {
	Lex(lval *yySymType) int
	Error(s string)
}

type yyParser interface {
	Parse(yyLexer) int
	Lookahead() int
}

type yyParserImpl struct {
	lval  yySymType
	stack [yyInitialStackSize]yySymType
	char  int
}

func (p *yyParserImpl) Lookahead() int {
	return p.char
}

func yyNewParser() yyParser {
	return &yyParserImpl{}
}

const yyFlag = -1000

func yyTokname(c int) string {
	if c >= 1 && c-1 < len(yyToknames) {
		if yyToknames[c-1] != "" {
			return yyToknames[c-1]
		}
	}
	return __yyfmt__.Sprintf("tok-%v", c)
}

func yyStatname(s int) string {
	if s >= 0 && s < len(yyStatenames) {
		if yyStatenames[s] != "" {
			return yyStatenames[s]
		}
	}
	return __yyfmt__.Sprintf("state-%v", s)
}

func yyErrorMessage(state, lookAhead int) string {
	const TOKSTART = 4

	if !yyErrorVerbose {
		return "syntax error"
	}

	for _, e := range yyErrorMessages {
		if e.state == state && e.token == lookAhead {
			return "syntax error: " + e.msg
		}
	}

	res := "syntax error: unexpected " + yyTokname(lookAhead)

	// To match Bison, suggest at most four expected tokens.
	expected := make([]int, 0, 4)

	// Look for shiftable tokens.
	base := yyPact[state]
	for tok := TOKSTART; tok-1 < len(yyToknames); tok++ {
		if n := base + tok; n >= 0 && n < yyLast && yyChk[yyAct[n]] == tok {
			if len(expected) == cap(expected) {
				return res
			}
			expected = append(expected, tok)
		}
	}

	if yyDef[state] == -2 {
		i := 0
		for yyExca[i] != -1 || yyExca[i+1] != state {
			i += 2
		}

		// Look for tokens that we accept or reduce.
		for i += 2; yyExca[i] >= 0; i += 2 {
			tok := yyExca[i]
			if tok < TOKSTART || yyExca[i+1] == 0 {
				continue
			}
			if len(expected) == cap(expected) {
				return res
			}
			expected = append(expected, tok)
		}

		// If the default action is to accept or reduce, give up.
		if yyExca[i+1] != 0 {
			return res
		}
	}

	for i, tok := range expected {
		if i == 0 {
			res += ", expecting "
		} else {
			res += " or "
		}
		res += yyTokname(tok)
	}
	return res
}

func yylex1(lex yyLexer, lval *yySymType) (char, token int) {
	token = 0
	char = lex.Lex(lval)
	if char <= 0 {
		token = yyTok1[0]
		goto out
	}
	if char < len(yyTok1) {
		token = yyTok1[char]
		goto out
	}
	if char >= yyPrivate {
		if char < yyPrivate+len(yyTok2) {
			token = yyTok2[char-yyPrivate]
			goto out
		}
	}
	for i := 0; i < len(yyTok3); i += 2 {
		token = yyTok3[i+0]
		if token == char {
			token = yyTok3[i+1]
			goto out
		}
	}

out:
	if token == 0 {
		token = yyTok2[1] /* unknown char */
	}
	if yyDebug >= 3 {
		__yyfmt__.Printf("lex %s(%d)\n", yyTokname(token), uint(char))
	}
	return char, token
}

func yyParse(yylex yyLexer) int {
	return yyNewParser().Parse(yylex)
}

func (yyrcvr *yyParserImpl) Parse(yylex yyLexer) int {
	var yyn int
	var yyVAL yySymType
	var yyDollar []yySymType
	_ = yyDollar // silence set and not used
	yyS := yyrcvr.stack[:]

	Nerrs := 0   /* number of errors */
	Errflag := 0 /* error recovery flag */
	yystate := 0
	yyrcvr.char = -1
	yytoken := -1 // yyrcvr.char translated into internal numbering
	defer func() {
		// Make sure we report no lookahead when not parsing.
		yystate = -1
		yyrcvr.char = -1
		yytoken = -1
	}()
	yyp := -1
	goto yystack

ret0:
	return 0

ret1:
	return 1

yystack:
	/* put a state and value onto the stack */
	if yyDebug >= 4 {
		__yyfmt__.Printf("char %v in %v\n", yyTokname(yytoken), yyStatname(yystate))
	}

	yyp++
	if yyp >= len(yyS) {
		nyys := make([]yySymType, len(yyS)*2)
		copy(nyys, yyS)
		yyS = nyys
	}
	yyS[yyp] = yyVAL
	yyS[yyp].yys = yystate

yynewstate:
	yyn = yyPact[yystate]
	if yyn <= yyFlag {
		goto yydefault /* simple state */
	}
	if yyrcvr.char < 0 {
		yyrcvr.char, yytoken = yylex1(yylex, &yyrcvr.lval)
	}
	yyn += yytoken
	if yyn < 0 || yyn >= yyLast {
		goto yydefault
	}
	yyn = yyAct[yyn]
	if yyChk[yyn] == yytoken { /* valid shift */
		yyrcvr.char = -1
		yytoken = -1
		yyVAL = yyrcvr.lval
		yystate = yyn
		if Errflag > 0 {
			Errflag--
		}
		goto yystack
	}

yydefault:
	/* default state action */
	yyn = yyDef[yystate]
	if yyn == -2 {
		if yyrcvr.char < 0 {
			yyrcvr.char, yytoken = yylex1(yylex, &yyrcvr.lval)
		}

		/* look through exception table */
		xi := 0
		for {
			if yyExca[xi+0] == -1 && yyExca[xi+1] == yystate {
				break
			}
			xi += 2
		}
		for xi += 2; ; xi += 2 {
			yyn = yyExca[xi+0]
			if yyn < 0 || yyn == yytoken {
				break
			}
		}
		yyn = yyExca[xi+1]
		if yyn < 0 {
			goto ret0
		}
	}
	if yyn == 0 {
		/* error ... attempt to resume parsing */
		switch Errflag {
		case 0: /* brand new error */
			yylex.Error(yyErrorMessage(yystate, yytoken))
			Nerrs++
			if yyDebug >= 1 {
				__yyfmt__.Printf("%s", yyStatname(yystate))
				__yyfmt__.Printf(" saw %s\n", yyTokname(yytoken))
			}
			fallthrough

		case 1, 2: /* incompletely recovered error ... try again */
			Errflag = 3

			/* find a state where "error" is a legal shift action */
			for yyp >= 0 {
				yyn = yyPact[yyS[yyp].yys] + yyErrCode
				if yyn >= 0 && yyn < yyLast {
					yystate = yyAct[yyn] /* simulate a shift of "error" */
					if yyChk[yystate] == yyErrCode {
						goto yystack
					}
				}

				/* the current p has no shift on "error", pop stack */
				if yyDebug >= 2 {
					__yyfmt__.Printf("error recovery pops state %d\n", yyS[yyp].yys)
				}
				yyp--
			}
			/* there is no state on the stack with an error shift ... abort */
			goto ret1

		case 3: /* no shift yet; clobber input char */
			if yyDebug >= 2 {
				__yyfmt__.Printf("error recovery discards %s\n", yyTokname(yytoken))
			}
			if yytoken == yyEofCode {
				goto ret1
			}
			yyrcvr.char = -1
			yytoken = -1
			goto yynewstate /* try again in the same state */
		}
	}

	/* reduction by production yyn */
	if yyDebug >= 2 {
		__yyfmt__.Printf("reduce %v in:\n\t%v\n", yyn, yyStatname(yystate))
	}

	yynt := yyn
	yypt := yyp
	_ = yypt // guard against "declared and not used"

	yyp -= yyR2[yyn]
	// yyp is now the index of $0. Perform the default action. Iff the
	// reduced production is ε, $1 is possibly out of range.
	if yyp+1 >= len(yyS) {
		nyys := make([]yySymType, len(yyS)*2)
		copy(nyys, yyS)
		yyS = nyys
	}
	yyVAL = yyS[yyp+1]

	/* consult goto table to find next state */
	yyn = yyR1[yyn]
	yyg := yyPgo[yyn]
	yyj := yyg + yyS[yyp].yys + 1

	if yyj >= yyLast {
		yystate = yyAct[yyg]
	} else {
		yystate = yyAct[yyj]
		if yyChk[yystate] != -yyn {
			yystate = yyAct[yyg]
		}
	}
	// dummy call; replaced with literal code
	switch yynt {

	case 1:
		yyDollar = yyS[yypt-2 : yypt+1]
		//line sql.y:276
		{
			setParseTree(yylex, yyDollar[1].statement)
		}
	case 2:
		yyDollar = yyS[yypt-0 : yypt+1]
		//line sql.y:281
		{
		}
	case 3:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:282
		{
		}
	case 4:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:286
		{
			yyVAL.statement = yyDollar[1].selStmt
		}
	case 22:
		yyDollar = yyS[yypt-4 : yypt+1]
		//line sql.y:309
		{
			sel := yyDollar[1].selStmt.(*Select)
			sel.OrderBy = yyDollar[2].orderBy
			sel.Limit = yyDollar[3].limit
			sel.Lock = yyDollar[4].str
			yyVAL.selStmt = sel
		}
	case 23:
		yyDollar = yyS[yypt-6 : yypt+1]
		//line sql.y:317
		{
			yyVAL.selStmt = &Union{Type: yyDollar[2].str, Left: yyDollar[1].selStmt, Right: yyDollar[3].selStmt, OrderBy: yyDollar[4].orderBy, Limit: yyDollar[5].limit, Lock: yyDollar[6].str}
		}
	case 24:
		yyDollar = yyS[yypt-7 : yypt+1]
		//line sql.y:321
		{
			yyVAL.selStmt = &Select{Comments: Comments(yyDollar[2].bytes2), Cache: yyDollar[3].str, SelectExprs: SelectExprs{Nextval{Expr: yyDollar[5].expr}}, From: TableExprs{&AliasedTableExpr{Expr: yyDollar[7].tableName}}}
		}
	case 25:
		yyDollar = yyS[yypt-10 : yypt+1]
		//line sql.y:328
		{
			yyVAL.selStmt = &Select{Comments: Comments(yyDollar[2].bytes2), Cache: yyDollar[3].str, Distinct: yyDollar[4].str, Hints: yyDollar[5].str, SelectExprs: yyDollar[6].selectExprs, From: yyDollar[7].tableExprs, Where: NewWhere(WhereStr, yyDollar[8].expr), GroupBy: GroupBy(yyDollar[9].exprs), Having: NewWhere(HavingStr, yyDollar[10].expr)}
		}
	case 26:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:334
		{
			yyVAL.selStmt = yyDollar[1].selStmt
		}
	case 27:
		yyDollar = yyS[yypt-3 : yypt+1]
		//line sql.y:338
		{
			yyVAL.selStmt = &ParenSelect{Select: yyDollar[2].selStmt}
		}
	case 28:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:344
		{
			yyVAL.selStmt = yyDollar[1].selStmt
		}
	case 29:
		yyDollar = yyS[yypt-3 : yypt+1]
		//line sql.y:348
		{
			yyVAL.selStmt = &ParenSelect{Select: yyDollar[2].selStmt}
		}
	case 30:
		yyDollar = yyS[yypt-6 : yypt+1]
		//line sql.y:355
		{
			// insert_data returns a *Insert pre-filled with Columns & Values
			ins := yyDollar[5].ins
			ins.Action = yyDollar[1].str
			ins.Comments = yyDollar[2].bytes2
			ins.Ignore = yyDollar[3].str
			ins.Table = yyDollar[4].tableName
			ins.OnDup = OnDup(yyDollar[6].updateExprs)
			yyVAL.statement = ins
		}
	case 31:
		yyDollar = yyS[yypt-7 : yypt+1]
		//line sql.y:366
		{
			cols := make(Columns, 0, len(yyDollar[6].updateExprs))
			vals := make(ValTuple, 0, len(yyDollar[7].updateExprs))
			for _, updateList := range yyDollar[6].updateExprs {
				cols = append(cols, updateList.Name.Name)
				vals = append(vals, updateList.Expr)
			}
			yyVAL.statement = &Insert{Action: yyDollar[1].str, Comments: Comments(yyDollar[2].bytes2), Ignore: yyDollar[3].str, Table: yyDollar[4].tableName, Columns: cols, Rows: Values{vals}, OnDup: OnDup(yyDollar[7].updateExprs)}
		}
	case 32:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:378
		{
			yyVAL.str = InsertStr
		}
	case 33:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:382
		{
			yyVAL.str = ReplaceStr
		}
	case 34:
		yyDollar = yyS[yypt-8 : yypt+1]
		//line sql.y:388
		{
			yyVAL.statement = &Update{Comments: Comments(yyDollar[2].bytes2), Table: yyDollar[3].tableName, Exprs: yyDollar[5].updateExprs, Where: NewWhere(WhereStr, yyDollar[6].expr), OrderBy: yyDollar[7].orderBy, Limit: yyDollar[8].limit}
		}
	case 35:
		yyDollar = yyS[yypt-7 : yypt+1]
		//line sql.y:394
		{
			yyVAL.statement = &Delete{Comments: Comments(yyDollar[2].bytes2), Table: yyDollar[4].tableName, Where: NewWhere(WhereStr, yyDollar[5].expr), OrderBy: yyDollar[6].orderBy, Limit: yyDollar[7].limit}
		}
	case 36:
		yyDollar = yyS[yypt-3 : yypt+1]
		//line sql.y:400
		{
			yyVAL.statement = &Set{Comments: Comments(yyDollar[2].bytes2), Exprs: yyDollar[3].setExprs}
		}
	case 37:
		yyDollar = yyS[yypt-4 : yypt+1]
		//line sql.y:404
		{
			yyVAL.statement = &Set{Comments: Comments(yyDollar[2].bytes2), Exprs: yyDollar[4].setExprs}
		}
	case 38:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:410
		{
			yyVAL.str = SessionStr
		}
	case 39:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:414
		{
			yyVAL.str = GlobalStr
		}
	case 40:
		yyDollar = yyS[yypt-2 : yypt+1]
		//line sql.y:421
		{
			yyDollar[1].ddl.Action = CreateTableStr
			yyDollar[1].ddl.TableSpec = yyDollar[2].TableSpec
			yyVAL.statement = yyDollar[1].ddl
		}
	case 41:
		yyDollar = yyS[yypt-9 : yypt+1]
		//line sql.y:427
		{
			yyDollar[1].ddl.Action = CreateTableStr
			yyDollar[1].ddl.TableSpec = yyDollar[2].TableSpec
			yyDollar[1].ddl.PartitionName = string(yyDollar[7].bytes)
			yyVAL.statement = yyDollar[1].ddl
		}
	case 42:
		yyDollar = yyS[yypt-4 : yypt+1]
		//line sql.y:434
		{
			var ifnotexists bool
			if yyDollar[3].byt != 0 {
				ifnotexists = true
			}
			yyVAL.statement = &DDL{Action: CreateDBStr, IfNotExists: ifnotexists, Database: yyDollar[4].tableIdent}
		}
	case 43:
		yyDollar = yyS[yypt-7 : yypt+1]
		//line sql.y:442
		{
			// Change this to an alter statement
			yyVAL.statement = &DDL{Action: CreateIndexStr, IndexName: string(yyDollar[4].bytes), Table: yyDollar[6].tableName, NewName: yyDollar[6].tableName}
		}
	case 44:
		yyDollar = yyS[yypt-4 : yypt+1]
		//line sql.y:449
		{
			var ifnotexists bool
			if yyDollar[3].byt != 0 {
				ifnotexists = true
			}
			yyVAL.ddl = &DDL{Action: CreateTableStr, IfNotExists: ifnotexists, Table: yyDollar[4].tableName, NewName: yyDollar[4].tableName}
			setDDL(yylex, yyVAL.ddl)
		}
	case 45:
		yyDollar = yyS[yypt-4 : yypt+1]
		//line sql.y:460
		{
			yyVAL.TableSpec = yyDollar[2].TableSpec
			yyVAL.TableSpec.Options = yyDollar[4].TableOptions
		}
	case 46:
		yyDollar = yyS[yypt-3 : yypt+1]
		//line sql.y:467
		{
			yyVAL.TableOptions.Engine = yyDollar[1].str
			yyVAL.TableOptions.Charset = yyDollar[3].str
		}
	case 47:
		yyDollar = yyS[yypt-0 : yypt+1]
		//line sql.y:473
		{
			yyVAL.str = ""
		}
	case 48:
		yyDollar = yyS[yypt-3 : yypt+1]
		//line sql.y:477
		{
			yyVAL.str = string(yyDollar[3].bytes)
		}
	case 49:
		yyDollar = yyS[yypt-0 : yypt+1]
		//line sql.y:482
		{
			yyVAL.str = ""
		}
	case 50:
		yyDollar = yyS[yypt-4 : yypt+1]
		//line sql.y:486
		{
			yyVAL.str = string(yyDollar[4].bytes)
		}
	case 51:
		yyDollar = yyS[yypt-0 : yypt+1]
		//line sql.y:491
		{
			yyVAL.str = ""
		}
	case 52:
		yyDollar = yyS[yypt-3 : yypt+1]
		//line sql.y:495
		{
		}
	case 53:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:501
		{
			yyVAL.TableSpec = &TableSpec{}
			yyVAL.TableSpec.AddColumn(yyDollar[1].columnDefinition)
		}
	case 54:
		yyDollar = yyS[yypt-3 : yypt+1]
		//line sql.y:506
		{
			yyVAL.TableSpec.AddColumn(yyDollar[3].columnDefinition)
		}
	case 55:
		yyDollar = yyS[yypt-3 : yypt+1]
		//line sql.y:510
		{
			yyVAL.TableSpec.AddIndex(yyDollar[3].indexDefinition)
		}
	case 56:
		yyDollar = yyS[yypt-8 : yypt+1]
		//line sql.y:516
		{
			yyDollar[2].columnType.NotNull = yyDollar[3].boolVal
			yyDollar[2].columnType.Default = yyDollar[4].optVal
			yyDollar[2].columnType.OnUpdate = yyDollar[5].optVal
			yyDollar[2].columnType.Autoincrement = yyDollar[6].boolVal
			yyDollar[2].columnType.KeyOpt = yyDollar[7].colKeyOpt
			yyDollar[2].columnType.Comment = yyDollar[8].optVal
			yyVAL.columnDefinition = &ColumnDefinition{Name: NewColIdent(string(yyDollar[1].bytes)), Type: yyDollar[2].columnType}
		}
	case 57:
		yyDollar = yyS[yypt-3 : yypt+1]
		//line sql.y:527
		{
			yyVAL.columnType = yyDollar[1].columnType
			yyVAL.columnType.Unsigned = yyDollar[2].boolVal
			yyVAL.columnType.Zerofill = yyDollar[3].boolVal
		}
	case 60:
		yyDollar = yyS[yypt-2 : yypt+1]
		//line sql.y:537
		{
			yyVAL.columnType = yyDollar[1].columnType
			yyVAL.columnType.Length = yyDollar[2].optVal
		}
	case 61:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:542
		{
			yyVAL.columnType = yyDollar[1].columnType
		}
	case 62:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:548
		{
			yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)}
		}
	case 63:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:552
		{
			yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)}
		}
	case 64:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:556
		{
			yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)}
		}
	case 65:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:560
		{
			yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)}
		}
	case 66:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:564
		{
			yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)}
		}
	case 67:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:568
		{
			yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)}
		}
	case 68:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:572
		{
			yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)}
		}
	case 69:
		yyDollar = yyS[yypt-2 : yypt+1]
		//line sql.y:578
		{
			yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)}
			yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length
			yyVAL.columnType.Scale = yyDollar[2].LengthScaleOption.Scale
		}
	case 70:
		yyDollar = yyS[yypt-2 : yypt+1]
		//line sql.y:584
		{
			yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)}
			yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length
			yyVAL.columnType.Scale = yyDollar[2].LengthScaleOption.Scale
		}
	case 71:
		yyDollar = yyS[yypt-2 : yypt+1]
		//line sql.y:590
		{
			yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)}
			yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length
			yyVAL.columnType.Scale = yyDollar[2].LengthScaleOption.Scale
		}
	case 72:
		yyDollar = yyS[yypt-2 : yypt+1]
		//line sql.y:596
		{
			yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)}
			yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length
			yyVAL.columnType.Scale = yyDollar[2].LengthScaleOption.Scale
		}
	case 73:
		yyDollar = yyS[yypt-2 : yypt+1]
		//line sql.y:602
		{
			yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)}
			yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length
			yyVAL.columnType.Scale = yyDollar[2].LengthScaleOption.Scale
		}
	case 74:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:610
		{
			yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)}
		}
	case 75:
		yyDollar = yyS[yypt-2 : yypt+1]
		//line sql.y:614
		{
			yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal}
		}
	case 76:
		yyDollar = yyS[yypt-2 : yypt+1]
		//line sql.y:618
		{
			yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal}
		}
	case 77:
		yyDollar = yyS[yypt-2 : yypt+1]
		//line sql.y:622
		{
			yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal}
		}
	case 78:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:626
		{
			yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)}
		}
	case 79:
		yyDollar = yyS[yypt-4 : yypt+1]
		//line sql.y:632
		{
			yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal, Charset: yyDollar[3].str, Collate: yyDollar[4].str}
		}
	case 80:
		yyDollar = yyS[yypt-4 : yypt+1]
		//line sql.y:636
		{
			yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal, Charset: yyDollar[3].str, Collate: yyDollar[4].str}
		}
	case 81:
		yyDollar = yyS[yypt-2 : yypt+1]
		//line sql.y:640
		{
			yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal}
		}
	case 82:
		yyDollar = yyS[yypt-2 : yypt+1]
		//line sql.y:644
		{
			yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal}
		}
	case 83:
		yyDollar = yyS[yypt-3 : yypt+1]
		//line sql.y:648
		{
			yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Charset: yyDollar[2].str, Collate: yyDollar[3].str}
		}
	case 84:
		yyDollar = yyS[yypt-3 : yypt+1]
		//line sql.y:652
		{
			yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Charset: yyDollar[2].str, Collate: yyDollar[3].str}
		}
	case 85:
		yyDollar = yyS[yypt-3 : yypt+1]
		//line sql.y:656
		{
			yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Charset: yyDollar[2].str, Collate: yyDollar[3].str}
		}
	case 86:
		yyDollar = yyS[yypt-3 : yypt+1]
		//line sql.y:660
		{
			yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Charset: yyDollar[2].str, Collate: yyDollar[3].str}
		}
	case 87:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:664
		{
			yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)}
		}
	case 88:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:668
		{
			yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)}
		}
	case 89:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:672
		{
			yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)}
		}
	case 90:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:676
		{
			yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)}
		}
	case 91:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:680
		{
			yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)}
		}
	case 92:
		yyDollar = yyS[yypt-4 : yypt+1]
		//line sql.y:684
		{
			yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), EnumValues: yyDollar[3].strs}
		}
	case 93:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:690
		{
			yyVAL.strs = make([]string, 0, 4)
			yyVAL.strs = append(yyVAL.strs, "'"+string(yyDollar[1].bytes)+"'")
		}
	case 94:
		yyDollar = yyS[yypt-3 : yypt+1]
		//line sql.y:695
		{
			yyVAL.strs = append(yyDollar[1].strs, "'"+string(yyDollar[3].bytes)+"'")
		}
	case 95:
		yyDollar = yyS[yypt-0 : yypt+1]
		//line sql.y:700
		{
			yyVAL.optVal = nil
		}
	case 96:
		yyDollar = yyS[yypt-3 : yypt+1]
		//line sql.y:704
		{
			yyVAL.optVal = NewIntVal(yyDollar[2].bytes)
		}
	case 97:
		yyDollar = yyS[yypt-0 : yypt+1]
		//line sql.y:709
		{
			yyVAL.LengthScaleOption = LengthScaleOption{}
		}
	case 98:
		yyDollar = yyS[yypt-5 : yypt+1]
		//line sql.y:713
		{
			yyVAL.LengthScaleOption = LengthScaleOption{
				Length: NewIntVal(yyDollar[2].bytes),
				Scale:  NewIntVal(yyDollar[4].bytes),
			}
		}
	case 99:
		yyDollar = yyS[yypt-0 : yypt+1]
		//line sql.y:721
		{
			yyVAL.LengthScaleOption = LengthScaleOption{}
		}
	case 100:
		yyDollar = yyS[yypt-3 : yypt+1]
		//line sql.y:725
		{
			yyVAL.LengthScaleOption = LengthScaleOption{
				Length: NewIntVal(yyDollar[2].bytes),
			}
		}
	case 101:
		yyDollar = yyS[yypt-5 : yypt+1]
		//line sql.y:731
		{
			yyVAL.LengthScaleOption = LengthScaleOption{
				Length: NewIntVal(yyDollar[2].bytes),
				Scale:  NewIntVal(yyDollar[4].bytes),
			}
		}
	case 102:
		yyDollar = yyS[yypt-0 : yypt+1]
		//line sql.y:739
		{
			yyVAL.boolVal = BoolVal(false)
		}
	case 103:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:743
		{
			yyVAL.boolVal = BoolVal(true)
		}
	case 104:
		yyDollar = yyS[yypt-0 : yypt+1]
		//line sql.y:748
		{
			yyVAL.boolVal = BoolVal(false)
		}
	case 105:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:752
		{
			yyVAL.boolVal = BoolVal(true)
		}
	case 106:
		yyDollar = yyS[yypt-0 : yypt+1]
		//line sql.y:758
		{
			yyVAL.boolVal = BoolVal(false)
		}
	case 107:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:762
		{
			yyVAL.boolVal = BoolVal(false)
		}
	case 108:
		yyDollar = yyS[yypt-2 : yypt+1]
		//line sql.y:766
		{
			yyVAL.boolVal = BoolVal(true)
		}
	case 109:
		yyDollar = yyS[yypt-0 : yypt+1]
		//line sql.y:771
		{
			yyVAL.optVal = nil
		}
	case 110:
		yyDollar = yyS[yypt-2 : yypt+1]
		//line sql.y:775
		{
			yyVAL.optVal = NewStrVal(yyDollar[2].bytes)
		}
	case 111:
		yyDollar = yyS[yypt-2 : yypt+1]
		//line sql.y:779
		{
			yyVAL.optVal = NewIntVal(yyDollar[2].bytes)
		}
	case 112:
		yyDollar = yyS[yypt-2 : yypt+1]
		//line sql.y:783
		{
			yyVAL.optVal = NewFloatVal(yyDollar[2].bytes)
		}
	case 113:
		yyDollar = yyS[yypt-2 : yypt+1]
		//line sql.y:787
		{
			yyVAL.optVal = NewValArg(yyDollar[2].bytes)
		}
	case 114:
		yyDollar = yyS[yypt-2 : yypt+1]
		//line sql.y:791
		{
			yyVAL.optVal = NewValArg(yyDollar[2].bytes)
		}
	case 115:
		yyDollar = yyS[yypt-0 : yypt+1]
		//line sql.y:796
		{
			yyVAL.optVal = nil
		}
	case 116:
		yyDollar = yyS[yypt-3 : yypt+1]
		//line sql.y:800
		{
			yyVAL.optVal = NewValArg(yyDollar[3].bytes)
		}
	case 117:
		yyDollar = yyS[yypt-0 : yypt+1]
		//line sql.y:805
		{
			yyVAL.boolVal = BoolVal(false)
		}
	case 118:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:809
		{
			yyVAL.boolVal = BoolVal(true)
		}
	case 119:
		yyDollar = yyS[yypt-0 : yypt+1]
		//line sql.y:814
		{
			yyVAL.str = ""
		}
	case 120:
		yyDollar = yyS[yypt-3 : yypt+1]
		//line sql.y:818
		{
			yyVAL.str = string(yyDollar[3].bytes)
		}
	case 121:
		yyDollar = yyS[yypt-3 : yypt+1]
		//line sql.y:822
		{
			yyVAL.str = string(yyDollar[3].bytes)
		}
	case 122:
		yyDollar = yyS[yypt-0 : yypt+1]
		//line sql.y:827
		{
			yyVAL.str = ""
		}
	case 123:
		yyDollar = yyS[yypt-2 : yypt+1]
		//line sql.y:831
		{
			yyVAL.str = string(yyDollar[2].bytes)
		}
	case 124:
		yyDollar = yyS[yypt-0 : yypt+1]
		//line sql.y:836
		{
			yyVAL.colKeyOpt = ColKeyNone
		}
	case 125:
		yyDollar = yyS[yypt-2 : yypt+1]
		//line sql.y:840
		{
			yyVAL.colKeyOpt = ColKeyPrimary
		}
	case 126:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:844
		{
			yyVAL.colKeyOpt = ColKey
		}
	case 127:
		yyDollar = yyS[yypt-2 : yypt+1]
		//line sql.y:848
		{
			yyVAL.colKeyOpt = ColKeyUniqueKey
		}
	case 128:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:852
		{
			yyVAL.colKeyOpt = ColKeyUnique
		}
	case 129:
		yyDollar = yyS[yypt-0 : yypt+1]
		//line sql.y:857
		{
			yyVAL.optVal = nil
		}
	case 130:
		yyDollar = yyS[yypt-2 : yypt+1]
		//line sql.y:861
		{
			yyVAL.optVal = NewStrVal(yyDollar[2].bytes)
		}
	case 131:
		yyDollar = yyS[yypt-4 : yypt+1]
		//line sql.y:867
		{
			yyVAL.indexDefinition = &IndexDefinition{Info: yyDollar[1].indexInfo, Columns: yyDollar[3].indexColumns}
		}
	case 132:
		yyDollar = yyS[yypt-7 : yypt+1]
		//line sql.y:871
		{
			yyVAL.indexDefinition = &IndexDefinition{Info: yyDollar[1].indexInfo, Columns: yyDollar[3].indexColumns}
		}
	case 133:
		yyDollar = yyS[yypt-2 : yypt+1]
		//line sql.y:877
		{
			yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[1].bytes) + " " + string(yyDollar[2].bytes), Name: NewColIdent("PRIMARY"), Primary: true, Unique: true}
		}
	case 134:
		yyDollar = yyS[yypt-3 : yypt+1]
		//line sql.y:881
		{
			yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[1].bytes) + " " + string(yyDollar[2].str), Name: NewColIdent(string(yyDollar[3].bytes)), Primary: false, Unique: true}
		}
	case 135:
		yyDollar = yyS[yypt-2 : yypt+1]
		//line sql.y:885
		{
			yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[1].bytes), Name: NewColIdent(string(yyDollar[2].bytes)), Primary: false, Unique: true}
		}
	case 136:
		yyDollar = yyS[yypt-2 : yypt+1]
		//line sql.y:889
		{
			yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[1].str), Name: NewColIdent(string(yyDollar[2].bytes)), Primary: false, Unique: false}
		}
	case 137:
		yyDollar = yyS[yypt-3 : yypt+1]
		//line sql.y:893
		{
			yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[1].bytes) + " " + string(yyDollar[2].str), Name: NewColIdent(string(yyDollar[3].bytes)), Primary: false, Unique: false, Fulltext: true}
		}
	case 138:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:900
		{
			yyVAL.str = string(yyDollar[1].bytes)
		}
	case 139:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:904
		{
			yyVAL.str = string(yyDollar[1].bytes)
		}
	case 140:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:910
		{
			yyVAL.indexColumns = []*IndexColumn{yyDollar[1].indexColumn}
		}
	case 141:
		yyDollar = yyS[yypt-3 : yypt+1]
		//line sql.y:914
		{
			yyVAL.indexColumns = append(yyVAL.indexColumns, yyDollar[3].indexColumn)
		}
	case 142:
		yyDollar = yyS[yypt-2 : yypt+1]
		//line sql.y:920
		{
			yyVAL.indexColumn = &IndexColumn{Column: yyDollar[1].colIdent, Length: yyDollar[2].optVal}
		}
	case 143:
		yyDollar = yyS[yypt-6 : yypt+1]
		//line sql.y:926
		{
			yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[4].tableName, NewName: yyDollar[4].tableName}
		}
	case 144:
		yyDollar = yyS[yypt-7 : yypt+1]
		//line sql.y:930
		{
			// Change this to a rename statement
			yyVAL.statement = &DDL{Action: RenameStr, Table: yyDollar[4].tableName, NewName: yyDollar[7].tableName}
		}
	case 145:
		yyDollar = yyS[yypt-7 : yypt+1]
		//line sql.y:935
		{
			// Rename an index can just be an alter
			yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[4].tableName, NewName: yyDollar[4].tableName}
		}
	case 146:
		yyDollar = yyS[yypt-7 : yypt+1]
		//line sql.y:940
		{
			yyVAL.statement = &DDL{Action: AlterEngineStr, Table: yyDollar[4].tableName, NewName: yyDollar[4].tableName, Engine: string(yyDollar[7].bytes)}
		}
	case 147:
		yyDollar = yyS[yypt-9 : yypt+1]
		//line sql.y:944
		{
			yyVAL.statement = &DDL{Action: AlterCharsetStr, Table: yyDollar[4].tableName, NewName: yyDollar[4].tableName, Charset: string(yyDollar[9].bytes)}
		}
	case 148:
		yyDollar = yyS[yypt-7 : yypt+1]
		//line sql.y:948
		{
			yyVAL.statement = &DDL{Action: AlterAddColumnStr, Table: yyDollar[4].tableName, NewName: yyDollar[4].tableName, TableSpec: yyDollar[7].TableSpec}
		}
	case 149:
		yyDollar = yyS[yypt-7 : yypt+1]
		//line sql.y:952
		{
			yyVAL.statement = &DDL{Action: AlterDropColumnStr, Table: yyDollar[4].tableName, NewName: yyDollar[4].tableName, DropColumnName: string(yyDollar[7].bytes)}
		}
	case 150:
		yyDollar = yyS[yypt-7 : yypt+1]
		//line sql.y:956
		{
			yyVAL.statement = &DDL{Action: AlterModifyColumnStr, Table: yyDollar[4].tableName, NewName: yyDollar[4].tableName, ModifyColumnDef: yyDollar[7].columnDefinition}
		}
	case 151:
		yyDollar = yyS[yypt-4 : yypt+1]
		//line sql.y:963
		{
			var exists bool
			if yyDollar[3].byt != 0 {
				exists = true
			}
			yyVAL.statement = &DDL{Action: DropTableStr, Table: yyDollar[4].tableName, IfExists: exists}
		}
	case 152:
		yyDollar = yyS[yypt-5 : yypt+1]
		//line sql.y:971
		{
			// Change this to an alter statement
			yyVAL.statement = &DDL{Action: DropIndexStr, IndexName: string(yyDollar[3].bytes), Table: yyDollar[5].tableName, NewName: yyDollar[5].tableName}
		}
	case 153:
		yyDollar = yyS[yypt-4 : yypt+1]
		//line sql.y:976
		{
			var exists bool
			if yyDollar[3].byt != 0 {
				exists = true
			}
			yyVAL.statement = &DDL{Action: DropDBStr, Database: yyDollar[4].tableIdent, IfExists: exists}
		}
	case 154:
		yyDollar = yyS[yypt-3 : yypt+1]
		//line sql.y:986
		{
			yyVAL.statement = &DDL{Action: TruncateTableStr, Table: yyDollar[3].tableName, NewName: yyDollar[3].tableName}
		}
	case 155:
		yyDollar = yyS[yypt-3 : yypt+1]
		//line sql.y:992
		{
			yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[3].tableName, NewName: yyDollar[3].tableName}
		}
	case 156:
		yyDollar = yyS[yypt-2 : yypt+1]
		//line sql.y:998
		{
			yyVAL.statement = &Xa{}
		}
	case 157:
		yyDollar = yyS[yypt-2 : yypt+1]
		//line sql.y:1004
		{
			yyVAL.statement = &Explain{}
		}
	case 158:
		yyDollar = yyS[yypt-3 : yypt+1]
		//line sql.y:1010
		{
			yyVAL.statement = &Kill{QueryID: &NumVal{raw: string(yyDollar[2].bytes)}}
		}
	case 159:
		yyDollar = yyS[yypt-4 : yypt+1]
		//line sql.y:1014
		{
			yyVAL.statement = &Kill{QueryID: &NumVal{raw: string(yyDollar[3].bytes)}}
		}
	case 160:
		yyDollar = yyS[yypt-2 : yypt+1]
		//line sql.y:1020
		{
			yyVAL.statement = &Transaction{Action: BeginTxnStr}
		}
	case 161:
		yyDollar = yyS[yypt-3 : yypt+1]
		//line sql.y:1024
		{
			yyVAL.statement = &Transaction{Action: StartTxnStr}
		}
	case 162:
		yyDollar = yyS[yypt-2 : yypt+1]
		//line sql.y:1028
		{
			yyVAL.statement = &Transaction{Action: RollbackTxnStr}
		}
	case 163:
		yyDollar = yyS[yypt-2 : yypt+1]
		//line sql.y:1032
		{
			yyVAL.statement = &Transaction{Action: CommitTxnStr}
		}
	case 164:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:1038
		{
			yyVAL.str = ShowUnsupportedStr
		}
	case 165:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:1042
		{
			switch v := string(yyDollar[1].bytes); v {
			case ShowDatabasesStr, ShowTablesStr, ShowEnginesStr, ShowVersionsStr, ShowProcesslistStr, ShowQueryzStr, ShowTxnzStr, ShowColumnsStr:
				yyVAL.str = v
			default:
				yyVAL.str = ShowUnsupportedStr
			}
		}
	case 166:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:1051
		{
			yyVAL.str = ShowUnsupportedStr
		}
	case 167:
		yyDollar = yyS[yypt-3 : yypt+1]
		//line sql.y:1057
		{
			yyVAL.statement = &Show{Type: yyDollar[2].str}
		}
	case 168:
		yyDollar = yyS[yypt-5 : yypt+1]
		//line sql.y:1061
		{
			yyVAL.statement = &Show{Type: ShowTablesStr, Database: yyDollar[4].tableName}
		}
	case 169:
		yyDollar = yyS[yypt-6 : yypt+1]
		//line sql.y:1065
		{
			yyVAL.statement = &Show{Type: ShowFullTablesStr, Database: yyDollar[4].tableName, Where: NewWhere(WhereStr, yyDollar[5].expr)}
		}
	case 170:
		yyDollar = yyS[yypt-5 : yypt+1]
		//line sql.y:1069
		{
			yyVAL.statement = &Show{Type: ShowColumnsStr, Table: yyDollar[4].tableName}
		}
	case 171:
		yyDollar = yyS[yypt-5 : yypt+1]
		//line sql.y:1073
		{
			yyVAL.statement = &Show{Type: ShowCreateTableStr, Table: yyDollar[4].tableName}
		}
	case 172:
		yyDollar = yyS[yypt-5 : yypt+1]
		//line sql.y:1077
		{
			yyVAL.statement = &Show{Type: ShowCreateDatabaseStr, Database: yyDollar[4].tableName}
		}
	case 173:
		yyDollar = yyS[yypt-3 : yypt+1]
		//line sql.y:1081
		{
			yyVAL.statement = &Show{Type: ShowWarningsStr}
		}
	case 174:
		yyDollar = yyS[yypt-3 : yypt+1]
		//line sql.y:1085
		{
			yyVAL.statement = &Show{Type: ShowVariablesStr}
		}
	case 175:
		yyDollar = yyS[yypt-6 : yypt+1]
		//line sql.y:1089
		{
			yyVAL.statement = &Show{Type: ShowBinlogEventsStr, From: yyDollar[4].str, Limit: yyDollar[5].limit}
		}
	case 176:
		yyDollar = yyS[yypt-3 : yypt+1]
		//line sql.y:1093
		{
			yyVAL.statement = &Show{Type: ShowStatusStr}
		}
	case 177:
		yyDollar = yyS[yypt-5 : yypt+1]
		//line sql.y:1097
		{
			yyVAL.statement = &Show{Type: ShowTableStatusStr, Database: yyDollar[4].tableName}
		}
	case 178:
		yyDollar = yyS[yypt-0 : yypt+1]
		//line sql.y:1102
		{
			yyVAL.str = ""
		}
	case 179:
		yyDollar = yyS[yypt-3 : yypt+1]
		//line sql.y:1106
		{
			yyVAL.str = string(yyDollar[3].bytes)
		}
	case 180:
		yyDollar = yyS[yypt-0 : yypt+1]
		//line sql.y:1111
		{
			yyVAL.tableName = TableName{}
		}
	case 181:
		yyDollar = yyS[yypt-2 : yypt+1]
		//line sql.y:1115
		{
			yyVAL.tableName = yyDollar[2].tableName
		}
	case 182:
		yyDollar = yyS[yypt-4 : yypt+1]
		//line sql.y:1121
		{
			yyVAL.statement = &Checksum{Table: yyDollar[3].tableName}
		}
	case 183:
		yyDollar = yyS[yypt-2 : yypt+1]
		//line sql.y:1127
		{
			yyVAL.statement = &Use{DBName: yyDollar[2].tableIdent}
		}
	case 184:
		yyDollar = yyS[yypt-2 : yypt+1]
		//line sql.y:1133
		{
			yyVAL.statement = &OtherRead{}
		}
	case 185:
		yyDollar = yyS[yypt-2 : yypt+1]
		//line sql.y:1137
		{
			yyVAL.statement = &OtherRead{}
		}
	case 186:
		yyDollar = yyS[yypt-2 : yypt+1]
		//line sql.y:1141
		{
			yyVAL.statement = &OtherAdmin{}
		}
	case 187:
		yyDollar = yyS[yypt-2 : yypt+1]
		//line sql.y:1145
		{
			yyVAL.statement = &OtherAdmin{}
		}
	case 188:
		yyDollar = yyS[yypt-0 : yypt+1]
		//line sql.y:1150
		{
			setAllowComments(yylex, true)
		}
	case 189:
		yyDollar = yyS[yypt-2 : yypt+1]
		//line sql.y:1154
		{
			yyVAL.bytes2 = yyDollar[2].bytes2
			setAllowComments(yylex, false)
		}
	case 190:
		yyDollar = yyS[yypt-0 : yypt+1]
		//line sql.y:1160
		{
			yyVAL.bytes2 = nil
		}
	case 191:
		yyDollar = yyS[yypt-2 : yypt+1]
		//line sql.y:1164
		{
			yyVAL.bytes2 = append(yyDollar[1].bytes2, yyDollar[2].bytes)
		}
	case 192:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:1170
		{
			yyVAL.str = UnionStr
		}
	case 193:
		yyDollar = yyS[yypt-2 : yypt+1]
		//line sql.y:1174
		{
			yyVAL.str = UnionAllStr
		}
	case 194:
		yyDollar = yyS[yypt-2 : yypt+1]
		//line sql.y:1178
		{
			yyVAL.str = UnionDistinctStr
		}
	case 195:
		yyDollar = yyS[yypt-0 : yypt+1]
		//line sql.y:1183
		{
			yyVAL.str = ""
		}
	case 196:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:1187
		{
			yyVAL.str = SQLNoCacheStr
		}
	case 197:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:1191
		{
			yyVAL.str = SQLCacheStr
		}
	case 198:
		yyDollar = yyS[yypt-0 : yypt+1]
		//line sql.y:1196
		{
			yyVAL.str = ""
		}
	case 199:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:1200
		{
			yyVAL.str = DistinctStr
		}
	case 200:
		yyDollar = yyS[yypt-0 : yypt+1]
		//line sql.y:1205
		{
			yyVAL.str = ""
		}
	case 201:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:1209
		{
			yyVAL.str = StraightJoinHint
		}
	case 202:
		yyDollar = yyS[yypt-0 : yypt+1]
		//line sql.y:1214
		{
			yyVAL.selectExprs = nil
		}
	case 203:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:1218
		{
			yyVAL.selectExprs = yyDollar[1].selectExprs
		}
	case 204:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:1224
		{
			yyVAL.selectExprs = SelectExprs{yyDollar[1].selectExpr}
		}
	case 205:
		yyDollar = yyS[yypt-3 : yypt+1]
		//line sql.y:1228
		{
			yyVAL.selectExprs = append(yyVAL.selectExprs, yyDollar[3].selectExpr)
		}
	case 206:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:1234
		{
			yyVAL.selectExpr = &StarExpr{}
		}
	case 207:
		yyDollar = yyS[yypt-2 : yypt+1]
		//line sql.y:1238
		{
			yyVAL.selectExpr = &AliasedExpr{Expr: yyDollar[1].expr, As: yyDollar[2].colIdent}
		}
	case 208:
		yyDollar = yyS[yypt-3 : yypt+1]
		//line sql.y:1242
		{
			yyVAL.selectExpr = &StarExpr{TableName: TableName{Name: yyDollar[1].tableIdent}}
		}
	case 209:
		yyDollar = yyS[yypt-5 : yypt+1]
		//line sql.y:1246
		{
			yyVAL.selectExpr = &StarExpr{TableName: TableName{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].tableIdent}}
		}
	case 210:
		yyDollar = yyS[yypt-0 : yypt+1]
		//line sql.y:1251
		{
			yyVAL.colIdent = ColIdent{}
		}
	case 211:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:1255
		{
			yyVAL.colIdent = yyDollar[1].colIdent
		}
	case 212:
		yyDollar = yyS[yypt-2 : yypt+1]
		//line sql.y:1259
		{
			yyVAL.colIdent = yyDollar[2].colIdent
		}
	case 214:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:1266
		{
			yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes))
		}
	case 215:
		yyDollar = yyS[yypt-0 : yypt+1]
		//line sql.y:1271
		{
			yyVAL.tableExprs = TableExprs{&AliasedTableExpr{Expr: TableName{Name: NewTableIdent("dual")}}}
		}
	case 216:
		yyDollar = yyS[yypt-2 : yypt+1]
		//line sql.y:1275
		{
			yyVAL.tableExprs = yyDollar[2].tableExprs
		}
	case 217:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:1281
		{
			yyVAL.tableExprs = TableExprs{yyDollar[1].tableExpr}
		}
	case 218:
		yyDollar = yyS[yypt-3 : yypt+1]
		//line sql.y:1285
		{
			yyVAL.tableExprs = append(yyVAL.tableExprs, yyDollar[3].tableExpr)
		}
	case 221:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:1295
		{
			yyVAL.tableExpr = yyDollar[1].aliasedTableName
		}
	case 222:
		yyDollar = yyS[yypt-3 : yypt+1]
		//line sql.y:1299
		{
			yyVAL.tableExpr = &AliasedTableExpr{Expr: yyDollar[1].subquery, As: yyDollar[3].tableIdent}
		}
	case 223:
		yyDollar = yyS[yypt-3 : yypt+1]
		//line sql.y:1303
		{
			yyVAL.tableExpr = &ParenTableExpr{Exprs: yyDollar[2].tableExprs}
		}
	case 224:
		yyDollar = yyS[yypt-3 : yypt+1]
		//line sql.y:1309
		{
			yyVAL.aliasedTableName = &AliasedTableExpr{Expr: yyDollar[1].tableName, As: yyDollar[2].tableIdent, Hints: yyDollar[3].indexHints}
		}
	case 225:
		yyDollar = yyS[yypt-3 : yypt+1]
		//line sql.y:1322
		{
			yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].str, RightExpr: yyDollar[3].tableExpr}
		}
	case 226:
		yyDollar = yyS[yypt-5 : yypt+1]
		//line sql.y:1326
		{
			yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].str, RightExpr: yyDollar[3].tableExpr, On: yyDollar[5].expr}
		}
	case 227:
		yyDollar = yyS[yypt-5 : yypt+1]
		//line sql.y:1330
		{
			yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].str, RightExpr: yyDollar[3].tableExpr, On: yyDollar[5].expr}
		}
	case 228:
		yyDollar = yyS[yypt-3 : yypt+1]
		//line sql.y:1334
		{
			yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].str, RightExpr: yyDollar[3].tableExpr}
		}
	case 229:
		yyDollar = yyS[yypt-0 : yypt+1]
		//line sql.y:1339
		{
			yyVAL.empty = struct{}{}
		}
	case 230:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:1341
		{
			yyVAL.empty = struct{}{}
		}
	case 231:
		yyDollar = yyS[yypt-0 : yypt+1]
		//line sql.y:1344
		{
			yyVAL.tableIdent = NewTableIdent("")
		}
	case 232:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:1348
		{
			yyVAL.tableIdent = yyDollar[1].tableIdent
		}
	case 233:
		yyDollar = yyS[yypt-2 : yypt+1]
		//line sql.y:1352
		{
			yyVAL.tableIdent = yyDollar[2].tableIdent
		}
	case 235:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:1359
		{
			yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].bytes))
		}
	case 236:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:1365
		{
			yyVAL.str = JoinStr
		}
	case 237:
		yyDollar = yyS[yypt-2 : yypt+1]
		//line sql.y:1369
		{
			yyVAL.str = JoinStr
		}
	case 238:
		yyDollar = yyS[yypt-2 : yypt+1]
		//line sql.y:1373
		{
			yyVAL.str = JoinStr
		}
	case 239:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:1377
		{
			yyVAL.str = StraightJoinStr
		}
	case 240:
		yyDollar = yyS[yypt-2 : yypt+1]
		//line sql.y:1383
		{
			yyVAL.str = LeftJoinStr
		}
	case 241:
		yyDollar = yyS[yypt-3 : yypt+1]
		//line sql.y:1387
		{
			yyVAL.str = LeftJoinStr
		}
	case 242:
		yyDollar = yyS[yypt-2 : yypt+1]
		//line sql.y:1391
		{
			yyVAL.str = RightJoinStr
		}
	case 243:
		yyDollar = yyS[yypt-3 : yypt+1]
		//line sql.y:1395
		{
			yyVAL.str = RightJoinStr
		}
	case 244:
		yyDollar = yyS[yypt-2 : yypt+1]
		//line sql.y:1401
		{
			yyVAL.str = NaturalJoinStr
		}
	case 245:
		yyDollar = yyS[yypt-2 : yypt+1]
		//line sql.y:1405
		{
			if yyDollar[2].str == LeftJoinStr {
				yyVAL.str = NaturalLeftJoinStr
			} else {
				yyVAL.str = NaturalRightJoinStr
			}
		}
	case 246:
		yyDollar = yyS[yypt-2 : yypt+1]
		//line sql.y:1415
		{
			yyVAL.tableName = yyDollar[2].tableName
		}
	case 247:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:1419
		{
			yyVAL.tableName = yyDollar[1].tableName
		}
	case 248:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:1425
		{
			yyVAL.tableName = TableName{Name: yyDollar[1].tableIdent}
		}
	case 249:
		yyDollar = yyS[yypt-3 : yypt+1]
		//line sql.y:1429
		{
			yyVAL.tableName = TableName{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].tableIdent}
		}
	case 250:
		yyDollar = yyS[yypt-0 : yypt+1]
		//line sql.y:1434
		{
			yyVAL.indexHints = nil
		}
	case 251:
		yyDollar = yyS[yypt-5 : yypt+1]
		//line sql.y:1438
		{
			yyVAL.indexHints = &IndexHints{Type: UseStr, Indexes: yyDollar[4].colIdents}
		}
	case 252:
		yyDollar = yyS[yypt-5 : yypt+1]
		//line sql.y:1442
		{
			yyVAL.indexHints = &IndexHints{Type: IgnoreStr, Indexes: yyDollar[4].colIdents}
		}
	case 253:
		yyDollar = yyS[yypt-5 : yypt+1]
		//line sql.y:1446
		{
			yyVAL.indexHints = &IndexHints{Type: ForceStr, Indexes: yyDollar[4].colIdents}
		}
	case 254:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:1452
		{
			yyVAL.colIdents = []ColIdent{yyDollar[1].colIdent}
		}
	case 255:
		yyDollar = yyS[yypt-3 : yypt+1]
		//line sql.y:1456
		{
			yyVAL.colIdents = append(yyDollar[1].colIdents, yyDollar[3].colIdent)
		}
	case 256:
		yyDollar = yyS[yypt-0 : yypt+1]
		//line sql.y:1461
		{
			yyVAL.expr = nil
		}
	case 257:
		yyDollar = yyS[yypt-2 : yypt+1]
		//line sql.y:1465
		{
			yyVAL.expr = yyDollar[2].expr
		}
	case 258:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:1471
		{
			yyVAL.expr = yyDollar[1].expr
		}
	case 259:
		yyDollar = yyS[yypt-3 : yypt+1]
		//line sql.y:1475
		{
			yyVAL.expr = &AndExpr{Left: yyDollar[1].expr, Right: yyDollar[3].expr}
		}
	case 260:
		yyDollar = yyS[yypt-3 : yypt+1]
		//line sql.y:1479
		{
			yyVAL.expr = &OrExpr{Left: yyDollar[1].expr, Right: yyDollar[3].expr}
		}
	case 261:
		yyDollar = yyS[yypt-2 : yypt+1]
		//line sql.y:1483
		{
			yyVAL.expr = &NotExpr{Expr: yyDollar[2].expr}
		}
	case 262:
		yyDollar = yyS[yypt-3 : yypt+1]
		//line sql.y:1487
		{
			yyVAL.expr = &IsExpr{Operator: yyDollar[3].str, Expr: yyDollar[1].expr}
		}
	case 263:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:1491
		{
			yyVAL.expr = yyDollar[1].expr
		}
	case 264:
		yyDollar = yyS[yypt-2 : yypt+1]
		//line sql.y:1495
		{
			yyVAL.expr = &Default{ColName: yyDollar[2].str}
		}
	case 265:
		yyDollar = yyS[yypt-0 : yypt+1]
		//line sql.y:1501
		{
			yyVAL.str = ""
		}
	case 266:
		yyDollar = yyS[yypt-3 : yypt+1]
		//line sql.y:1505
		{
			yyVAL.str = string(yyDollar[2].bytes)
		}
	case 267:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:1511
		{
			yyVAL.boolVal = BoolVal(true)
		}
	case 268:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:1515
		{
			yyVAL.boolVal = BoolVal(false)
		}
	case 269:
		yyDollar = yyS[yypt-3 : yypt+1]
		//line sql.y:1521
		{
			yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: yyDollar[2].str, Right: yyDollar[3].expr}
		}
	case 270:
		yyDollar = yyS[yypt-3 : yypt+1]
		//line sql.y:1525
		{
			yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: InStr, Right: yyDollar[3].colTuple}
		}
	case 271:
		yyDollar = yyS[yypt-4 : yypt+1]
		//line sql.y:1529
		{
			yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: NotInStr, Right: yyDollar[4].colTuple}
		}
	case 272:
		yyDollar = yyS[yypt-4 : yypt+1]
		//line sql.y:1533
		{
			yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: LikeStr, Right: yyDollar[3].expr, Escape: yyDollar[4].expr}
		}
	case 273:
		yyDollar = yyS[yypt-5 : yypt+1]
		//line sql.y:1537
		{
			yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: NotLikeStr, Right: yyDollar[4].expr, Escape: yyDollar[5].expr}
		}
	case 274:
		yyDollar = yyS[yypt-3 : yypt+1]
		//line sql.y:1541
		{
			yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: RegexpStr, Right: yyDollar[3].expr}
		}
	case 275:
		yyDollar = yyS[yypt-4 : yypt+1]
		//line sql.y:1545
		{
			yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: NotRegexpStr, Right: yyDollar[4].expr}
		}
	case 276:
		yyDollar = yyS[yypt-5 : yypt+1]
		//line sql.y:1549
		{
			yyVAL.expr = &RangeCond{Left: yyDollar[1].expr, Operator: BetweenStr, From: yyDollar[3].expr, To: yyDollar[5].expr}
		}
	case 277:
		yyDollar = yyS[yypt-6 : yypt+1]
		//line sql.y:1553
		{
			yyVAL.expr = &RangeCond{Left: yyDollar[1].expr, Operator: NotBetweenStr, From: yyDollar[4].expr, To: yyDollar[6].expr}
		}
	case 278:
		yyDollar = yyS[yypt-2 : yypt+1]
		//line sql.y:1557
		{
			yyVAL.expr = &ExistsExpr{Subquery: yyDollar[2].subquery}
		}
	case 279:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:1563
		{
			yyVAL.str = IsNullStr
		}
	case 280:
		yyDollar = yyS[yypt-2 : yypt+1]
		//line sql.y:1567
		{
			yyVAL.str = IsNotNullStr
		}
	case 281:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:1571
		{
			yyVAL.str = IsTrueStr
		}
	case 282:
		yyDollar = yyS[yypt-2 : yypt+1]
		//line sql.y:1575
		{
			yyVAL.str = IsNotTrueStr
		}
	case 283:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:1579
		{
			yyVAL.str = IsFalseStr
		}
	case 284:
		yyDollar = yyS[yypt-2 : yypt+1]
		//line sql.y:1583
		{
			yyVAL.str = IsNotFalseStr
		}
	case 285:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:1589
		{
			yyVAL.str = EqualStr
		}
	case 286:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:1593
		{
			yyVAL.str = LessThanStr
		}
	case 287:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:1597
		{
			yyVAL.str = GreaterThanStr
		}
	case 288:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:1601
		{
			yyVAL.str = LessEqualStr
		}
	case 289:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:1605
		{
			yyVAL.str = GreaterEqualStr
		}
	case 290:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:1609
		{
			yyVAL.str = NotEqualStr
		}
	case 291:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:1613
		{
			yyVAL.str = NullSafeEqualStr
		}
	case 292:
		yyDollar = yyS[yypt-0 : yypt+1]
		//line sql.y:1618
		{
			yyVAL.expr = nil
		}
	case 293:
		yyDollar = yyS[yypt-2 : yypt+1]
		//line sql.y:1622
		{
			yyVAL.expr = yyDollar[2].expr
		}
	case 294:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:1628
		{
			yyVAL.colTuple = yyDollar[1].valTuple
		}
	case 295:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:1632
		{
			yyVAL.colTuple = yyDollar[1].subquery
		}
	case 296:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:1636
		{
			yyVAL.colTuple = ListArg(yyDollar[1].bytes)
		}
	case 297:
		yyDollar = yyS[yypt-3 : yypt+1]
		//line sql.y:1642
		{
			yyVAL.subquery = &Subquery{yyDollar[2].selStmt}
		}
	case 298:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:1648
		{
			yyVAL.exprs = Exprs{yyDollar[1].expr}
		}
	case 299:
		yyDollar = yyS[yypt-3 : yypt+1]
		//line sql.y:1652
		{
			yyVAL.exprs = append(yyDollar[1].exprs, yyDollar[3].expr)
		}
	case 300:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:1658
		{
			yyVAL.expr = yyDollar[1].expr
		}
	case 301:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:1662
		{
			yyVAL.expr = yyDollar[1].boolVal
		}
	case 302:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:1666
		{
			yyVAL.expr = yyDollar[1].colName
		}
	case 303:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:1670
		{
			yyVAL.expr = yyDollar[1].expr
		}
	case 304:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:1674
		{
			yyVAL.expr = yyDollar[1].subquery
		}
	case 305:
		yyDollar = yyS[yypt-3 : yypt+1]
		//line sql.y:1678
		{
			yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: BitAndStr, Right: yyDollar[3].expr}
		}
	case 306:
		yyDollar = yyS[yypt-3 : yypt+1]
		//line sql.y:1682
		{
			yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: BitOrStr, Right: yyDollar[3].expr}
		}
	case 307:
		yyDollar = yyS[yypt-3 : yypt+1]
		//line sql.y:1686
		{
			yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: BitXorStr, Right: yyDollar[3].expr}
		}
	case 308:
		yyDollar = yyS[yypt-3 : yypt+1]
		//line sql.y:1690
		{
			yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: PlusStr, Right: yyDollar[3].expr}
		}
	case 309:
		yyDollar = yyS[yypt-3 : yypt+1]
		//line sql.y:1694
		{
			yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: MinusStr, Right: yyDollar[3].expr}
		}
	case 310:
		yyDollar = yyS[yypt-3 : yypt+1]
		//line sql.y:1698
		{
			yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: MultStr, Right: yyDollar[3].expr}
		}
	case 311:
		yyDollar = yyS[yypt-3 : yypt+1]
		//line sql.y:1702
		{
			yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: DivStr, Right: yyDollar[3].expr}
		}
	case 312:
		yyDollar = yyS[yypt-3 : yypt+1]
		//line sql.y:1706
		{
			yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: IntDivStr, Right: yyDollar[3].expr}
		}
	case 313:
		yyDollar = yyS[yypt-3 : yypt+1]
		//line sql.y:1710
		{
			yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ModStr, Right: yyDollar[3].expr}
		}
	case 314:
		yyDollar = yyS[yypt-3 : yypt+1]
		//line sql.y:1714
		{
			yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ModStr, Right: yyDollar[3].expr}
		}
	case 315:
		yyDollar = yyS[yypt-3 : yypt+1]
		//line sql.y:1718
		{
			yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ShiftLeftStr, Right: yyDollar[3].expr}
		}
	case 316:
		yyDollar = yyS[yypt-3 : yypt+1]
		//line sql.y:1722
		{
			yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ShiftRightStr, Right: yyDollar[3].expr}
		}
	case 317:
		yyDollar = yyS[yypt-3 : yypt+1]
		//line sql.y:1726
		{
			yyVAL.expr = &BinaryExpr{Left: yyDollar[1].colName, Operator: JSONExtractOp, Right: yyDollar[3].expr}
		}
	case 318:
		yyDollar = yyS[yypt-3 : yypt+1]
		//line sql.y:1730
		{
			yyVAL.expr = &BinaryExpr{Left: yyDollar[1].colName, Operator: JSONUnquoteExtractOp, Right: yyDollar[3].expr}
		}
	case 319:
		yyDollar = yyS[yypt-3 : yypt+1]
		//line sql.y:1734
		{
			yyVAL.expr = &CollateExpr{Expr: yyDollar[1].expr, Charset: yyDollar[3].str}
		}
	case 320:
		yyDollar = yyS[yypt-2 : yypt+1]
		//line sql.y:1738
		{
			yyVAL.expr = &UnaryExpr{Operator: BinaryStr, Expr: yyDollar[2].expr}
		}
	case 321:
		yyDollar = yyS[yypt-2 : yypt+1]
		//line sql.y:1742
		{
			if num, ok := yyDollar[2].expr.(*SQLVal); ok && num.Type == IntVal {
				yyVAL.expr = num
			} else {
				yyVAL.expr = &UnaryExpr{Operator: UPlusStr, Expr: yyDollar[2].expr}
			}
		}
	case 322:
		yyDollar = yyS[yypt-2 : yypt+1]
		//line sql.y:1750
		{
			if num, ok := yyDollar[2].expr.(*SQLVal); ok && num.Type == IntVal {
				// Handle double negative
				if num.Val[0] == '-' {
					num.Val = num.Val[1:]
					yyVAL.expr = num
				} else {
					yyVAL.expr = NewIntVal(append([]byte("-"), num.Val...))
				}
			} else {
				yyVAL.expr = &UnaryExpr{Operator: UMinusStr, Expr: yyDollar[2].expr}
			}
		}
	case 323:
		yyDollar = yyS[yypt-2 : yypt+1]
		//line sql.y:1764
		{
			yyVAL.expr = &UnaryExpr{Operator: TildaStr, Expr: yyDollar[2].expr}
		}
	case 324:
		yyDollar = yyS[yypt-2 : yypt+1]
		//line sql.y:1768
		{
			yyVAL.expr = &UnaryExpr{Operator: BangStr, Expr: yyDollar[2].expr}
		}
	case 325:
		yyDollar = yyS[yypt-3 : yypt+1]
		//line sql.y:1772
		{
			// This rule prevents the usage of INTERVAL
			// as a function. If support is needed for that,
			// we'll need to revisit this. The solution
			// will be non-trivial because of grammar conflicts.
			yyVAL.expr = &IntervalExpr{Expr: yyDollar[2].expr, Unit: yyDollar[3].colIdent}
		}
	case 330:
		yyDollar = yyS[yypt-4 : yypt+1]
		//line sql.y:1790
		{
			yyVAL.expr = &FuncExpr{Name: yyDollar[1].colIdent, Exprs: yyDollar[3].selectExprs}
		}
	case 331:
		yyDollar = yyS[yypt-5 : yypt+1]
		//line sql.y:1794
		{
			yyVAL.expr = &FuncExpr{Name: yyDollar[1].colIdent, Distinct: true, Exprs: yyDollar[4].selectExprs}
		}
	case 332:
		yyDollar = yyS[yypt-6 : yypt+1]
		//line sql.y:1798
		{
			yyVAL.expr = &FuncExpr{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].colIdent, Exprs: yyDollar[5].selectExprs}
		}
	case 333:
		yyDollar = yyS[yypt-4 : yypt+1]
		//line sql.y:1808
		{
			yyVAL.expr = &FuncExpr{Name: NewColIdent("left"), Exprs: yyDollar[3].selectExprs}
		}
	case 334:
		yyDollar = yyS[yypt-4 : yypt+1]
		//line sql.y:1812
		{
			yyVAL.expr = &FuncExpr{Name: NewColIdent("right"), Exprs: yyDollar[3].selectExprs}
		}
	case 335:
		yyDollar = yyS[yypt-6 : yypt+1]
		//line sql.y:1816
		{
			yyVAL.expr = &ConvertExpr{Expr: yyDollar[3].expr, Type: yyDollar[5].convertType}
		}
	case 336:
		yyDollar = yyS[yypt-6 : yypt+1]
		//line sql.y:1820
		{
			yyVAL.expr = &ConvertExpr{Expr: yyDollar[3].expr, Type: yyDollar[5].convertType}
		}
	case 337:
		yyDollar = yyS[yypt-6 : yypt+1]
		//line sql.y:1824
		{
			yyVAL.expr = &ConvertUsingExpr{Expr: yyDollar[3].expr, Type: yyDollar[5].str}
		}
	case 338:
		yyDollar = yyS[yypt-9 : yypt+1]
		//line sql.y:1828
		{
			yyVAL.expr = &MatchExpr{Columns: yyDollar[3].selectExprs, Expr: yyDollar[7].expr, Option: yyDollar[8].str}
		}
	case 339:
		yyDollar = yyS[yypt-7 : yypt+1]
		//line sql.y:1832
		{
			yyVAL.expr = &GroupConcatExpr{Distinct: yyDollar[3].str, Exprs: yyDollar[4].selectExprs, OrderBy: yyDollar[5].orderBy, Separator: yyDollar[6].str}
		}
	case 340:
		yyDollar = yyS[yypt-5 : yypt+1]
		//line sql.y:1836
		{
			yyVAL.expr = &CaseExpr{Expr: yyDollar[2].expr, Whens: yyDollar[3].whens, Else: yyDollar[4].expr}
		}
	case 341:
		yyDollar = yyS[yypt-4 : yypt+1]
		//line sql.y:1840
		{
			yyVAL.expr = &ValuesFuncExpr{Name: yyDollar[3].colIdent}
		}
	case 342:
		yyDollar = yyS[yypt-2 : yypt+1]
		//line sql.y:1850
		{
			yyVAL.expr = &FuncExpr{Name: NewColIdent("current_timestamp")}
		}
	case 343:
		yyDollar = yyS[yypt-2 : yypt+1]
		//line sql.y:1854
		{
			yyVAL.expr = &FuncExpr{Name: NewColIdent("utc_timestamp")}
		}
	case 344:
		yyDollar = yyS[yypt-2 : yypt+1]
		//line sql.y:1858
		{
			yyVAL.expr = &FuncExpr{Name: NewColIdent("utc_time")}
		}
	case 345:
		yyDollar = yyS[yypt-2 : yypt+1]
		//line sql.y:1862
		{
			yyVAL.expr = &FuncExpr{Name: NewColIdent("utc_date")}
		}
	case 346:
		yyDollar = yyS[yypt-2 : yypt+1]
		//line sql.y:1867
		{
			yyVAL.expr = &FuncExpr{Name: NewColIdent("localtime")}
		}
	case 347:
		yyDollar = yyS[yypt-2 : yypt+1]
		//line sql.y:1872
		{
			yyVAL.expr = &FuncExpr{Name: NewColIdent("localtimestamp")}
		}
	case 348:
		yyDollar = yyS[yypt-2 : yypt+1]
		//line sql.y:1877
		{
			yyVAL.expr = &FuncExpr{Name: NewColIdent("current_date")}
		}
	case 349:
		yyDollar = yyS[yypt-2 : yypt+1]
		//line sql.y:1882
		{
			yyVAL.expr = &FuncExpr{Name: NewColIdent("current_time")}
		}
	case 352:
		yyDollar = yyS[yypt-4 : yypt+1]
		//line sql.y:1896
		{
			yyVAL.expr = &FuncExpr{Name: NewColIdent("if"), Exprs: yyDollar[3].selectExprs}
		}
	case 353:
		yyDollar = yyS[yypt-4 : yypt+1]
		//line sql.y:1900
		{
			yyVAL.expr = &FuncExpr{Name: NewColIdent("database"), Exprs: yyDollar[3].selectExprs}
		}
	case 354:
		yyDollar = yyS[yypt-4 : yypt+1]
		//line sql.y:1904
		{
			yyVAL.expr = &FuncExpr{Name: NewColIdent("mod"), Exprs: yyDollar[3].selectExprs}
		}
	case 355:
		yyDollar = yyS[yypt-4 : yypt+1]
		//line sql.y:1908
		{
			yyVAL.expr = &FuncExpr{Name: NewColIdent("replace"), Exprs: yyDollar[3].selectExprs}
		}
	case 356:
		yyDollar = yyS[yypt-0 : yypt+1]
		//line sql.y:1914
		{
			yyVAL.str = ""
		}
	case 357:
		yyDollar = yyS[yypt-3 : yypt+1]
		//line sql.y:1918
		{
			yyVAL.str = BooleanModeStr
		}
	case 358:
		yyDollar = yyS[yypt-4 : yypt+1]
		//line sql.y:1922
		{
			yyVAL.str = NaturalLanguageModeStr
		}
	case 359:
		yyDollar = yyS[yypt-7 : yypt+1]
		//line sql.y:1926
		{
			yyVAL.str = NaturalLanguageModeWithQueryExpansionStr
		}
	case 360:
		yyDollar = yyS[yypt-3 : yypt+1]
		//line sql.y:1930
		{
			yyVAL.str = QueryExpansionStr
		}
	case 361:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:1936
		{
			yyVAL.str = string(yyDollar[1].bytes)
		}
	case 362:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:1940
		{
			yyVAL.str = string(yyDollar[1].bytes)
		}
	case 363:
		yyDollar = yyS[yypt-2 : yypt+1]
		//line sql.y:1946
		{
			yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal}
		}
	case 364:
		yyDollar = yyS[yypt-3 : yypt+1]
		//line sql.y:1950
		{
			yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal, Charset: yyDollar[3].str, Operator: CharacterSetStr}
		}
	case 365:
		yyDollar = yyS[yypt-3 : yypt+1]
		//line sql.y:1954
		{
			yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal, Charset: string(yyDollar[3].bytes)}
		}
	case 366:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:1958
		{
			yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)}
		}
	case 367:
		yyDollar = yyS[yypt-2 : yypt+1]
		//line sql.y:1962
		{
			yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal}
		}
	case 368:
		yyDollar = yyS[yypt-2 : yypt+1]
		//line sql.y:1966
		{
			yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)}
			yyVAL.convertType.Length = yyDollar[2].LengthScaleOption.Length
			yyVAL.convertType.Scale = yyDollar[2].LengthScaleOption.Scale
		}
	case 369:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:1972
		{
			yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)}
		}
	case 370:
		yyDollar = yyS[yypt-2 : yypt+1]
		//line sql.y:1976
		{
			yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal}
		}
	case 371:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:1980
		{
			yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)}
		}
	case 372:
		yyDollar = yyS[yypt-2 : yypt+1]
		//line sql.y:1984
		{
			yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)}
		}
	case 373:
		yyDollar = yyS[yypt-2 : yypt+1]
		//line sql.y:1988
		{
			yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal}
		}
	case 374:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:1992
		{
			yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)}
		}
	case 375:
		yyDollar = yyS[yypt-2 : yypt+1]
		//line sql.y:1996
		{
			yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)}
		}
	case 376:
		yyDollar = yyS[yypt-0 : yypt+1]
		//line sql.y:2001
		{
			yyVAL.expr = nil
		}
	case 377:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:2005
		{
			yyVAL.expr = yyDollar[1].expr
		}
	case 378:
		yyDollar = yyS[yypt-0 : yypt+1]
		//line sql.y:2010
		{
			yyVAL.str = string("")
		}
	case 379:
		yyDollar = yyS[yypt-2 : yypt+1]
		//line sql.y:2014
		{
			yyVAL.str = " separator '" + string(yyDollar[2].bytes) + "'"
		}
	case 380:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:2020
		{
			yyVAL.whens = []*When{yyDollar[1].when}
		}
	case 381:
		yyDollar = yyS[yypt-2 : yypt+1]
		//line sql.y:2024
		{
			yyVAL.whens = append(yyDollar[1].whens, yyDollar[2].when)
		}
	case 382:
		yyDollar = yyS[yypt-4 : yypt+1]
		//line sql.y:2030
		{
			yyVAL.when = &When{Cond: yyDollar[2].expr, Val: yyDollar[4].expr}
		}
	case 383:
		yyDollar = yyS[yypt-0 : yypt+1]
		//line sql.y:2035
		{
			yyVAL.expr = nil
		}
	case 384:
		yyDollar = yyS[yypt-2 : yypt+1]
		//line sql.y:2039
		{
			yyVAL.expr = yyDollar[2].expr
		}
	case 385:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:2045
		{
			yyVAL.colName = &ColName{Name: yyDollar[1].colIdent}
		}
	case 386:
		yyDollar = yyS[yypt-3 : yypt+1]
		//line sql.y:2049
		{
			yyVAL.colName = &ColName{Qualifier: TableName{Name: yyDollar[1].tableIdent}, Name: yyDollar[3].colIdent}
		}
	case 387:
		yyDollar = yyS[yypt-5 : yypt+1]
		//line sql.y:2053
		{
			yyVAL.colName = &ColName{Qualifier: TableName{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].tableIdent}, Name: yyDollar[5].colIdent}
		}
	case 388:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:2059
		{
			yyVAL.expr = NewStrVal(yyDollar[1].bytes)
		}
	case 389:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:2063
		{
			yyVAL.expr = NewHexVal(yyDollar[1].bytes)
		}
	case 390:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:2067
		{
			yyVAL.expr = NewIntVal(yyDollar[1].bytes)
		}
	case 391:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:2071
		{
			yyVAL.expr = NewFloatVal(yyDollar[1].bytes)
		}
	case 392:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:2075
		{
			yyVAL.expr = NewHexNum(yyDollar[1].bytes)
		}
	case 393:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:2079
		{
			yyVAL.expr = NewValArg(yyDollar[1].bytes)
		}
	case 394:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:2083
		{
			yyVAL.expr = &NullVal{}
		}
	case 395:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:2089
		{
			// TODO(sougou): Deprecate this construct.
			if yyDollar[1].colIdent.Lowered() != "value" {
				yylex.Error("expecting value after next")
				return 1
			}
			yyVAL.expr = NewIntVal([]byte("1"))
		}
	case 396:
		yyDollar = yyS[yypt-2 : yypt+1]
		//line sql.y:2098
		{
			yyVAL.expr = NewIntVal(yyDollar[1].bytes)
		}
	case 397:
		yyDollar = yyS[yypt-2 : yypt+1]
		//line sql.y:2102
		{
			yyVAL.expr = NewValArg(yyDollar[1].bytes)
		}
	case 398:
		yyDollar = yyS[yypt-0 : yypt+1]
		//line sql.y:2107
		{
			yyVAL.exprs = nil
		}
	case 399:
		yyDollar = yyS[yypt-3 : yypt+1]
		//line sql.y:2111
		{
			yyVAL.exprs = yyDollar[3].exprs
		}
	case 400:
		yyDollar = yyS[yypt-0 : yypt+1]
		//line sql.y:2116
		{
			yyVAL.expr = nil
		}
	case 401:
		yyDollar = yyS[yypt-2 : yypt+1]
		//line sql.y:2120
		{
			yyVAL.expr = yyDollar[2].expr
		}
	case 402:
		yyDollar = yyS[yypt-0 : yypt+1]
		//line sql.y:2125
		{
			yyVAL.orderBy = nil
		}
	case 403:
		yyDollar = yyS[yypt-3 : yypt+1]
		//line sql.y:2129
		{
			yyVAL.orderBy = yyDollar[3].orderBy
		}
	case 404:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:2135
		{
			yyVAL.orderBy = OrderBy{yyDollar[1].order}
		}
	case 405:
		yyDollar = yyS[yypt-3 : yypt+1]
		//line sql.y:2139
		{
			yyVAL.orderBy = append(yyDollar[1].orderBy, yyDollar[3].order)
		}
	case 406:
		yyDollar = yyS[yypt-2 : yypt+1]
		//line sql.y:2145
		{
			yyVAL.order = &Order{Expr: yyDollar[1].expr, Direction: yyDollar[2].str}
		}
	case 407:
		yyDollar = yyS[yypt-0 : yypt+1]
		//line sql.y:2150
		{
			yyVAL.str = AscScr
		}
	case 408:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:2154
		{
			yyVAL.str = AscScr
		}
	case 409:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:2158
		{
			yyVAL.str = DescScr
		}
	case 410:
		yyDollar = yyS[yypt-0 : yypt+1]
		//line sql.y:2163
		{
			yyVAL.limit = nil
		}
	case 411:
		yyDollar = yyS[yypt-2 : yypt+1]
		//line sql.y:2167
		{
			yyVAL.limit = &Limit{Rowcount: yyDollar[2].expr}
		}
	case 412:
		yyDollar = yyS[yypt-4 : yypt+1]
		//line sql.y:2171
		{
			yyVAL.limit = &Limit{Offset: yyDollar[2].expr, Rowcount: yyDollar[4].expr}
		}
	case 413:
		yyDollar = yyS[yypt-4 : yypt+1]
		//line sql.y:2175
		{
			yyVAL.limit = &Limit{Offset: yyDollar[4].expr, Rowcount: yyDollar[2].expr}
		}
	case 414:
		yyDollar = yyS[yypt-0 : yypt+1]
		//line sql.y:2180
		{
			yyVAL.str = ""
		}
	case 415:
		yyDollar = yyS[yypt-2 : yypt+1]
		//line sql.y:2184
		{
			yyVAL.str = ForUpdateStr
		}
	case 416:
		yyDollar = yyS[yypt-4 : yypt+1]
		//line sql.y:2188
		{
			yyVAL.str = ShareModeStr
		}
	case 417:
		yyDollar = yyS[yypt-2 : yypt+1]
		//line sql.y:2201
		{
			yyVAL.ins = &Insert{Rows: yyDollar[2].values}
		}
	case 418:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:2205
		{
			yyVAL.ins = &Insert{Rows: yyDollar[1].selStmt}
		}
	case 419:
		yyDollar = yyS[yypt-3 : yypt+1]
		//line sql.y:2209
		{
			// Drop the redundant parenthesis.
			yyVAL.ins = &Insert{Rows: yyDollar[2].selStmt}
		}
	case 420:
		yyDollar = yyS[yypt-5 : yypt+1]
		//line sql.y:2214
		{
			yyVAL.ins = &Insert{Columns: yyDollar[2].columns, Rows: yyDollar[5].values}
		}
	case 421:
		yyDollar = yyS[yypt-4 : yypt+1]
		//line sql.y:2218
		{
			yyVAL.ins = &Insert{Columns: yyDollar[2].columns, Rows: yyDollar[4].selStmt}
		}
	case 422:
		yyDollar = yyS[yypt-6 : yypt+1]
		//line sql.y:2222
		{
			// Drop the redundant parenthesis.
			yyVAL.ins = &Insert{Columns: yyDollar[2].columns, Rows: yyDollar[5].selStmt}
		}
	case 423:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:2229
		{
			yyVAL.columns = Columns{yyDollar[1].colIdent}
		}
	case 424:
		yyDollar = yyS[yypt-3 : yypt+1]
		//line sql.y:2233
		{
			yyVAL.columns = Columns{yyDollar[3].colIdent}
		}
	case 425:
		yyDollar = yyS[yypt-3 : yypt+1]
		//line sql.y:2237
		{
			yyVAL.columns = append(yyVAL.columns, yyDollar[3].colIdent)
		}
	case 426:
		yyDollar = yyS[yypt-5 : yypt+1]
		//line sql.y:2241
		{
			yyVAL.columns = append(yyVAL.columns, yyDollar[5].colIdent)
		}
	case 427:
		yyDollar = yyS[yypt-0 : yypt+1]
		//line sql.y:2246
		{
			yyVAL.updateExprs = nil
		}
	case 428:
		yyDollar = yyS[yypt-5 : yypt+1]
		//line sql.y:2250
		{
			yyVAL.updateExprs = yyDollar[5].updateExprs
		}
	case 429:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:2256
		{
			yyVAL.values = Values{yyDollar[1].valTuple}
		}
	case 430:
		yyDollar = yyS[yypt-3 : yypt+1]
		//line sql.y:2260
		{
			yyVAL.values = append(yyDollar[1].values, yyDollar[3].valTuple)
		}
	case 431:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:2266
		{
			yyVAL.valTuple = yyDollar[1].valTuple
		}
	case 432:
		yyDollar = yyS[yypt-2 : yypt+1]
		//line sql.y:2270
		{
			yyVAL.valTuple = ValTuple{}
		}
	case 433:
		yyDollar = yyS[yypt-3 : yypt+1]
		//line sql.y:2276
		{
			yyVAL.valTuple = ValTuple(yyDollar[2].exprs)
		}
	case 434:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:2282
		{
			if len(yyDollar[1].valTuple) == 1 {
				yyVAL.expr = &ParenExpr{yyDollar[1].valTuple[0]}
			} else {
				yyVAL.expr = yyDollar[1].valTuple
			}
		}
	case 435:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:2292
		{
			yyVAL.updateExprs = UpdateExprs{yyDollar[1].updateExpr}
		}
	case 436:
		yyDollar = yyS[yypt-3 : yypt+1]
		//line sql.y:2296
		{
			yyVAL.updateExprs = append(yyDollar[1].updateExprs, yyDollar[3].updateExpr)
		}
	case 437:
		yyDollar = yyS[yypt-3 : yypt+1]
		//line sql.y:2302
		{
			yyVAL.updateExpr = &UpdateExpr{Name: yyDollar[1].colName, Expr: yyDollar[3].expr}
		}
	case 438:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:2308
		{
			yyVAL.setExprs = SetExprs{yyDollar[1].setExpr}
		}
	case 439:
		yyDollar = yyS[yypt-3 : yypt+1]
		//line sql.y:2312
		{
			yyVAL.setExprs = append(yyDollar[1].setExprs, yyDollar[3].setExpr)
		}
	case 440:
		yyDollar = yyS[yypt-3 : yypt+1]
		//line sql.y:2318
		{
			yyVAL.setExpr = &SetExpr{Name: yyDollar[1].colIdent, Expr: yyDollar[3].expr}
		}
	case 441:
		yyDollar = yyS[yypt-3 : yypt+1]
		//line sql.y:2322
		{
			yyVAL.setExpr = &SetExpr{Name: NewColIdent(string(yyDollar[1].bytes)), Expr: yyDollar[2].expr}
		}
	case 443:
		yyDollar = yyS[yypt-2 : yypt+1]
		//line sql.y:2329
		{
			yyVAL.bytes = []byte("charset")
		}
	case 445:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:2336
		{
			yyVAL.expr = NewStrVal([]byte(yyDollar[1].colIdent.String()))
		}
	case 446:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:2340
		{
			yyVAL.expr = NewStrVal(yyDollar[1].bytes)
		}
	case 447:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:2344
		{
			yyVAL.expr = &Default{}
		}
	case 450:
		yyDollar = yyS[yypt-0 : yypt+1]
		//line sql.y:2354
		{
			yyVAL.byt = 0
		}
	case 451:
		yyDollar = yyS[yypt-2 : yypt+1]
		//line sql.y:2356
		{
			yyVAL.byt = 1
		}
	case 452:
		yyDollar = yyS[yypt-0 : yypt+1]
		//line sql.y:2359
		{
			yyVAL.byt = 0
		}
	case 453:
		yyDollar = yyS[yypt-3 : yypt+1]
		//line sql.y:2361
		{
			yyVAL.byt = 1
		}
	case 454:
		yyDollar = yyS[yypt-0 : yypt+1]
		//line sql.y:2364
		{
			yyVAL.str = ""
		}
	case 455:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:2366
		{
			yyVAL.str = IgnoreStr
		}
	case 456:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:2370
		{
			yyVAL.empty = struct{}{}
		}
	case 457:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:2372
		{
			yyVAL.empty = struct{}{}
		}
	case 458:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:2374
		{
			yyVAL.empty = struct{}{}
		}
	case 459:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:2376
		{
			yyVAL.empty = struct{}{}
		}
	case 460:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:2378
		{
			yyVAL.empty = struct{}{}
		}
	case 461:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:2380
		{
			yyVAL.empty = struct{}{}
		}
	case 462:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:2382
		{
			yyVAL.empty = struct{}{}
		}
	case 463:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:2384
		{
			yyVAL.empty = struct{}{}
		}
	case 464:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:2386
		{
			yyVAL.empty = struct{}{}
		}
	case 465:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:2388
		{
			yyVAL.empty = struct{}{}
		}
	case 466:
		yyDollar = yyS[yypt-0 : yypt+1]
		//line sql.y:2391
		{
			yyVAL.empty = struct{}{}
		}
	case 467:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:2393
		{
			yyVAL.empty = struct{}{}
		}
	case 468:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:2395
		{
			yyVAL.empty = struct{}{}
		}
	case 469:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:2399
		{
			yyVAL.empty = struct{}{}
		}
	case 470:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:2401
		{
			yyVAL.empty = struct{}{}
		}
	case 471:
		yyDollar = yyS[yypt-0 : yypt+1]
		//line sql.y:2404
		{
			yyVAL.empty = struct{}{}
		}
	case 472:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:2406
		{
			yyVAL.empty = struct{}{}
		}
	case 473:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:2408
		{
			yyVAL.empty = struct{}{}
		}
	case 474:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:2412
		{
			yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes))
		}
	case 475:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:2416
		{
			yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes))
		}
	case 477:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:2423
		{
			yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes))
		}
	case 478:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:2429
		{
			yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].bytes))
		}
	case 479:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:2433
		{
			yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].bytes))
		}
	case 481:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:2440
		{
			yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].bytes))
		}
	case 637:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:2621
		{
			if incNesting(yylex) {
				yylex.Error("max nesting level reached")
				return 1
			}
		}
	case 638:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:2630
		{
			decNesting(yylex)
		}
	case 639:
		yyDollar = yyS[yypt-0 : yypt+1]
		//line sql.y:2635
		{
			forceEOF(yylex)
		}
	case 640:
		yyDollar = yyS[yypt-0 : yypt+1]
		//line sql.y:2640
		{
			forceEOF(yylex)
		}
	case 641:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:2644
		{
			forceEOF(yylex)
		}
	case 642:
		yyDollar = yyS[yypt-1 : yypt+1]
		//line sql.y:2648
		{
			forceEOF(yylex)
		}
	}
	goto yystack /* stack new state and value */
}
